码迷,mamicode.com
首页 > 其他好文 > 详细

最长的循环节

时间:2015-07-04 12:33:27      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1035

因为结果要么是有限小数要么是无限循环小数,那么只要模拟这个过程,然后判断循环就跳出,记录循环次数就好。

 1 #include <iostream>
 2 #include <string.h>
 3 #include <stdio.h>
 4 #include <map>
 5 using namespace std;
 6 int vis[1001],a[1001];
 7 int main()
 8 {
 9     //freopen("a.txt","r",stdin);
10     int x,y,z,k;
11     for(int i=1;i<=1000;i++)
12     {
13         memset(vis,0,sizeof(vis));
14         x=1,z=0,k=1;
15         while(1)
16         {
17             y=x%i;
18             x=x/i;
19             if(y==0||vis[y]) break;
20             vis[y]=1;
21             x=(k-x*i)*10;
22             k=x;
23             z++;
24             //printf("%d\n",x);
25         }
26         if(vis[y]) a[i]=z;
27         else a[i]=0;
28        // printf("%d\n",a[i]);
29     }
30     int n,j=1,ans=0;
31     scanf("%d",&n);
32     for(int i=1;i<=n;i++)
33     {
34         if(a[i]>ans)
35         {
36             ans=a[i];
37             j=i;
38         }
39     }
40     printf("%d\n",j);
41     return 0;
42 }

 

最长的循环节

标签:

原文地址:http://www.cnblogs.com/nowandforever/p/4620343.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!