总时间限制:
1000ms
内存限制:
65536kB
描述
已知正整数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 c[40];
int g[40],y,s,f;
int main()
{
cin>>c;
int len=strlen(c);
for(int i=0;i<len;i++) g[y++] = c[i]-'0';
for(int k=2;k<=9;k++)
{
s=0;
for(int i=0;i<len;i++)
{
int a=g[i];
a=a+s*10;
s=a%k;
if(i==len-1 &&s==0)
{
cout<<k<<" ";
f=1;
}
}
}
if(f==0) cout<<"none";
}
该代码实现了一个程序,输入一个不超过30位的非负整数c,然后找出所有能整除c的2到9之间的正整数k,并按从小到大的顺序输出。如果找不到这样的k,则输出'none'。示例中,当输入为30时,输出的因子为2356。

被折叠的 条评论
为什么被折叠?



