牛客網——大整數的因子
阿新 • • 發佈:2018-12-22
題目描述
已知正整數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; }