您的位置:首页 > 其它

九度OJ 题目1125:大整数的因子

2015-08-28 11:25 218 查看

一.题目描述:

已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k.

输入:

若干个非负整数c,c的位数<=30

每行一个c,当c=-1时中止

(不要对-1进行计算!)

输出:

每一个c的结果占一行

1) 若存在满足 c%k == 0 的k,输出所有这样的k,中间用空格隔开,最后一个k后面没有空格。

2) 若没有这样的k则输出"none"

样例输入:

30

72

13

-1

样例输出:

2 3 5 6

2 3 4 6 8 9

none

提示:

注意整数溢出问题

不要对-1进行计算

二.题目分析

模拟长整数除法

三.代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
int n,i,j,k,t,num[32],len,flag;
char str[32];

while(scanf("%s",str))
{
if(strlen(str)==2&&str[0]=='-'&&str[1]=='1')
break;

flag=0;

for(k=2;k<=9;k++)
{
int jie=0;
for(i=0;str[i];i++)
num[i]=str[i]-'0';
len=i;

for(i=0;i<len;i++)
{
t=jie*10+num[i];
num[i]=t/k;
jie=t%k;
}
if(jie==0&&flag==0)
{
printf("%d",k);
flag=1;
}
else if(jie==0&&flag==1)
printf(" %d",k);
}
if(flag==0)
printf("none");
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: