博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2009年西电计算机研究生复试上机题(4)
阅读量:4105 次
发布时间:2019-05-25

本文共 1526 字,大约阅读时间需要 5 分钟。

题目描述
对于给定的字符序列,从左至右将所有的数字字符取出拼接成一个无符号整数(字符序列长度小于100,拼接出的整数小于2^31,),计算并输出该整数的最大因子(如果是素数,则其最大因子为自身)

 

输入

有多组数据,输入数据的第一行为一个正整数,表示字符序列的数目,每组数据为一行字符序列。

 

输出

对每个字符序列,取出所得整数的最大因子,若字符序列中没有数字或者找出的整数为0,则输出0,每个整数占一行输出。

 

样例输入
3 sdf0ejg3.f?9f ?4afd0s&2d79*(g abcde
 

样例输出
13 857 0
 

提示 [+]

*** 提示已隐藏,点击上方 [+] 可显示 ***

 

来源

 

/*********************************  *    日期:2013-3-10 *    作者:SJF0115  *    题号: 天勤OJ 题目1217: Problem C *    来源:http://acmclub.com/problem.php?id=1217 *    结果:AC  *    来源:2009年西电计算机研究生复试上机题  *    总结: **********************************/#include
#include
#include
//最大因子unsigned int Factor(unsigned int n){ int Max = 0; for(unsigned int i = 2;i * i <= n;i++){ if(n % i == 0){ //当前因子 Max = i; } //除以当前因子 while(n % i == 0){ n = n / i; } } if(n > Max){ Max = n; } return Max;} int main(){ int i,len,N; unsigned int sum,Max; char array[101]; while(scanf("%d",&N) != EOF){ while(N--){ scanf("%s",array); len = strlen(array); sum = 0; //拼接成一个无符号整数 for(i = 0;i < len;i++){ if(array[i] >= '0' && array[i] <= '9'){ sum = sum * 10 + array[i] - '0'; } } //若字符序列中没有数字或者找出的整数为0,则输出0 if(sum == 0){ printf("0\n"); } else if(sum == 1){ printf("1\n"); } else{ printf("%d\n",Factor(sum)); } } } return 0;}

测试用例:

 

注意:

举例说明:36的因子包括2,3所以最大因子应该是3

转载地址:http://wkcsi.baihongyu.com/

你可能感兴趣的文章
JS中各种数组遍历方式的性能对比
查看>>
Mysql复制表以及复制数据库
查看>>
进程管理(一)
查看>>
linux 内核—进程的地址空间(1)
查看>>
存储器管理(二)
查看>>
开局一张图,学一学项目管理神器Maven!
查看>>
Android中的Binder(二)
查看>>
Framework之View的工作原理(一)
查看>>
Web应用架构
查看>>
设计模式之策略模式
查看>>
深究Java中的RMI底层原理
查看>>
用idea创建一个maven web项目
查看>>
Kafka
查看>>
9.1 为我们的角色划分权限
查看>>
维吉尼亚之加解密及破解
查看>>
DES加解密
查看>>
TCP/IP协议三次握手与四次握手流程解析
查看>>
PHP 扩展开发 : 编写一个hello world !
查看>>
inet_ntoa、 inet_aton、inet_addr
查看>>
用模板写单链表
查看>>