http://ybt.ssoier.cn:8088/problem_show.php?pid=1171
1171:大整數的因子
時間限制: 1000 ms 內存限制: 65536 KB
提交數: 5610 通過數: 3261
【題目描述】
已知正整數k滿足2≤k≤9,現給出長度最大爲30位的十進制非負整數c,求所有能整除c的k。
【輸入】
一個非負整數c,c的位數≤30。
【輸出】
若存在滿足 c%k == 0 的k,從小到大輸出所有這樣的k,相鄰兩個數之間用單個空格隔開;若沒有這樣的k,則輸出"none"。
【輸入樣例】
30
【輸出樣例】
2 3 5 6
#include<bits/stdc++.h>
using namespace std;
char a1[110];
int a[110], lena, i, res[110], s;//res[110]存儲每一位商 s表示餘數
bool flag = false;
int main()
{
memset(a, 0, sizeof(a));
gets(a1);
lena=strlen(a1);
for(i=0; i<lena; i++)
a[i]=a1[i]-'0';
for(int k=2; k<=9; k++){
s=a[0];//將餘數初始化
for(i=1; i<lena; i++)//for循環輸出找到每一位商,和最後的餘數
{
int aa=s*10+a[i];//aa表示除數
res[i]=aa/k;//取得商
s=aa%k;//取得餘數
}
if(s == 0){
cout << k << " ";
flag = true;
}
}
if(flag == false)
cout << "none";
return 0;
}