2.2.3 RUNAROUND NUMBERS 循环数

来源:互联网 发布:js获取list长度 编辑:程序博客网 时间:2024/05/22 03:12

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;     } } 


1 0
原创粉丝点击