九度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进行计算
二.题目分析
模拟长整数除法
三.代码
一.题目描述:
已知正整数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; }
相关文章推荐
- iOS AutoLayout自动布局中级开发教程(8)-VisualFormat可视化格式语言创建约束
- 使用continue语句
- 流量阶梯单价计费,并非想象中那样美好
- 产品设计想法
- 经过验证过的接收系统广播
- Centos 上使用Mono+MVC5+WebApi+Sqlite
- 010editor 破解 扩展
- MongoDB跳出循环的两种方式
- Linux设备驱动模型的private_data 简单理解
- 【后缀数组之SA数组】【真难懂啊】
- nginx+tomcat集群负载均衡下tomcat故障后的的会话转移
- 生成注释
- 为什么匿名内部类参数必须为final类型
- 百度牵手大悦城 相爱相杀的零售与互联网需要新玩法
- 在textView中输入时避免键盘的遮挡
- 简单的邮件发送
- Linux下基于HTTP协议带用户认证的GIT开发环境设置
- 第一次作业
- fopen与读写的标识r,r+,rb+,rt+,w+.....
- Reveal 编译错误 Undefined symbols for architecture i386