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;
}