cs50 pset1 credit 为什么使用模数?
cs50 pset1 credit why use modulo?
我正在尝试通过信用卡验证解决 cs50 pset1。
根据它,我们需要将每个交替数字乘以2,然后将所有数字相加。如果总和的最后一位为零,则该数字无效。
题目中提到using using modulo,但我不确定我是否理解正确
建议使用取模的方式求出号码的最后一位。我不确定模应该做什么。例如,它表示 4003600000000014 的数字是 4。我想我必须检查每个数字,直到找到模数结果。
但购物车号可以有一位或多位数字。所以我们不能使用模数来查找最后一位数字。我错过了什么吗?
我也遇到了信用问题,但遇到了不同的问题。
我相信 modulo
函数用于从右到左提取数字中的每个数字。您将不得不遍历它(数字的长度),最后一次执行循环会给您第一个数字(最左边)
循环主要包含:
- 运行次数与其长度相同。
Digit=num%10
num=num/10
//丢弃最右边的数字,以便下一个 运行 将提取新数字
最后,数字将等于最左边的数字。
这适用于 VISA 卡,因为只需要第一位数字。但是对于像 AMEX 这样的其他公司,您必须在最后一个之前的 运行 中包含一个 if 语句来提取第二个数字。
希望对您有所帮助!
我正在尝试通过信用卡验证解决 cs50 pset1。
根据它,我们需要将每个交替数字乘以2,然后将所有数字相加。如果总和的最后一位为零,则该数字无效。
题目中提到using using modulo,但我不确定我是否理解正确
建议使用取模的方式求出号码的最后一位。我不确定模应该做什么。例如,它表示 4003600000000014 的数字是 4。我想我必须检查每个数字,直到找到模数结果。
但购物车号可以有一位或多位数字。所以我们不能使用模数来查找最后一位数字。我错过了什么吗?
我也遇到了信用问题,但遇到了不同的问题。
我相信 modulo
函数用于从右到左提取数字中的每个数字。您将不得不遍历它(数字的长度),最后一次执行循环会给您第一个数字(最左边)
循环主要包含:
- 运行次数与其长度相同。
Digit=num%10
num=num/10
//丢弃最右边的数字,以便下一个 运行 将提取新数字
最后,数字将等于最左边的数字。
这适用于 VISA 卡,因为只需要第一位数字。但是对于像 AMEX 这样的其他公司,您必须在最后一个之前的 运行 中包含一个 if 语句来提取第二个数字。
希望对您有所帮助!