一道关于取模运算的数学题,推倒出公式即可:
一开始把num数组放在了栈空间里面,并且对于index下标没有做溢出判断,从而使得k变为了47,让我很不解,后来发现是数组溢出覆盖了。
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
#define LEN 10000
int num[LEN];
int main() {
int a, k;
int sum;
while(scanf("%d", &k) != EOF) {
int i, j, index;
memset(num, 0, sizeof(num));
sum = 47;
index = 0;
while(num[0] != sum) {
if(0 == sum%k) {
a = sum/k;
break;
}
num[index++] = sum%k;
if(LEN == index) {
break;
}
sum += 65;
}
if(num[0] == sum || LEN == index) {
printf("no\n");
}
else {
printf("%d\n", a);
}
}
return 0;
}