题目描述
已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k.
输入描述:
若干个非负整数c,c的位数<=30 每行一个c
输出描述:
每一个c的结果占一行 1) 若存在满足 c%k == 0 的k,输出所有这样的k,中间用空格隔开,最后一个k后面没有空格。 2) 若没有这样的k则输出"none" 注意整数溢出问题 不要对-1进行计算
链接:https://www.nowcoder.com/questionTerminal/3d6cee12fbf54ea99bb165cbaba5823d 来源:牛客网 //参考大数取余算法http://blog.csdn.net/qq_32779119/article/details/79513480 #include <cstdio> #include <cstring> //求BigNum对n的余数 int Mod(char BigNum[], int n){ int ans = 0; for(int i = 0; i < strlen(BigNum); i++) ans = (ans * 10 + (BigNum[i] - '0')) % n; return ans; } int main() { //freopen("data.txt", "r", stdin); char BigNum[31] = {0}; while(scanf("%s", BigNum) != EOF){ int i, count; for(i = 2, count = 0; i <= 9; i++){ if(Mod(BigNum, i) == 0 && count > 0) printf(" %d", i); if(Mod(BigNum, i) == 0 && count == 0){ printf("%d", i); count++; } } if(count == 0) printf("none"); printf("\n"); } return 0; }