首页 > 代码库 > 2.2.3 RUNAROUND NUMBERS 循环数
2.2.3 RUNAROUND NUMBERS 循环数
PS:最近工作比较忙,所以把以前在学校做acm的时候写的一些解题报告发出来
http://acm.sdibt.edu.cn/JudgeOnline/problem.php?id=2327
题目大意:(如题)
输入输出:(如题)
解题思路:从开始数后一个数往后枚举,然后判断其是不是循环数,如果是就输出退出。
void transfer() //转换函数,将整数的每一位数提取出来 { int i; n=0; while(tmp>0) { i=tmp%10; tmp/=10; tmpstr[n]=i; n++; } for(i=0;i<=n;i++) str[i]=tmpstr[n-i]; } void check() { int i,j,k; for(i=0;i<10;i++) mrk[i]=0; for(i=1;i<=n;i++) mrk[str[i]]++; for(i=0;i<=9;i++) { if(mrk[i]>1) //数里面有位数的数字重复 { flag=false; return; } } j=1; for(i=0;i<10;i++) mrk[i]=0; for(i=1;i<=n;i++) //每位数判断 { k=str[j]; j=(str[j]+j)%n; //循环 if(!j)j+=n; if(mrk[j]!=0||str[j]==k) //不满足循环数的条件或者已经判断过了,往后走k步出现的数和k相同 { flag=false; return; } mrk[j]=1; //标记判断过了 } if(j==1) { flag=true; return; } }
2.2.3 RUNAROUND NUMBERS 循环数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。