题目:
描述
已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。
输入
一个非负整数c,c的位数<=30。
输出
若存在满足 c%k == 0 的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。
样例输入
30
样例输出
2 3 5 6
解题思路:
这道题的的思路类似大整数除法,和我们小学时学的除法的思路类似,只是除数有了范围2~9而已
内附代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
char a[100];
gets(a);
int f=0,t=0,i,j;
for(j=2;j<=9;j++)
{
t=0;
for(i=0;i<strlen(a);i++)
{
if(a[i]-'0'+t>=j)
t=(a[i]-'0'+t)%j*10;
else t=(a[i]-'0'+t)*10;
}
if(t==0)
{
printf("%d ",j);
f=1;
}
}
if(f==0)printf("none");
return 0;
}