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 获取每个输入字符的数值,%在结束时计算除法的余数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)