有人知道如何解决这个C#数学算法吗?

1 c#

有人知道如何解决这个C#数学算法吗?

控制编号通过将"社会安全号码"中的每个数字乘以2和1(从2开始)来计算.然后它计算并加在一起.

控制数应等于10,以便正确并通过.

例如,720310-1212"社会安全号码"

7* 2 = 14  --> 1+4

2* 1 = 2   --> 2 

0* 2 = 0   --> 0

3* 1 = 3   --> 3

1* 2 = 2   --> 2

0* 1 = 0   --> 0

1* 2 = 2   --> 2

2* 1 = 2   --> 2

1* 2 = 1   --> 2

2* 1 = 2   --> 2

然后将它们加1 + 4 + 2 + 0 + 3 + 2 + 0 + 2 + 2 + 2 + 2 = 20

20/10 = 2通!

dtb*_*dtb 11

你需要:

  • 一个积累数字的柜台,
  • 迭代输入字符串的循环,
  • char.GetNumericValue 获取每个输入字符的数值,
  • 一个布尔标志,每次迭代都会更改,以指示是否乘以1或2,
  • 模数运算符%在结束时计算除法的余数10.

应该够简单.家庭作业?


编辑

LINQ解决方案:

var valid = "720310-1212"
    .Where(c => char.IsDigit(c))
    .Select(c => (int)char.GetNumericValue(c))
    .Select((x, i) => x * (2 - i % 2))
    .Select(x => x % 10 + x / 10)
    .Sum() % 10 == 0;
Run Code Online (Sandbox Code Playgroud)

  • 它可能是家庭作业,但不一定; 在给定的样本数据看起来像一个社会安全号码的瑞典对手,并且它们经常被不同的部门和组织作为一种"客户号",所以它是一个你希望验证他们一个相当常见的情况下(这是根据所描述的算法完成).虽然在OP的昵称中似乎确实有一个学生年龄参考... (2认同)