superman

聚精会神搞建设 一心一意谋发展
posts - 190, comments - 17, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Section 2.2 - Runaround Numbers

Posted on 2009-03-30 17:23 superman 阅读(103) 评论(0)  编辑 收藏 引用 所属分类: USACO
 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 bool isRunaroundNumber(int num)
 6 {
 7     int n = 0;
 8     int t, x[10], c[10= { 0 };
 9 
10     while (num)
11     {
12         t = num % 10;
13 
14         if ((c[t] += 1> 1)
15             return false;
16 
17         x[n++= t;
18         num /= 10;
19     }
20 
21     for (int i = 0; i < n / 2; i++)
22         swap(x[i], x[n - i - 1]);
23 
24     //=============================
25     memset(c, 0sizeof(c));
26 
27     int p = 0;
28     for (int i = 0; i < n; i++)
29     {
30         c[p]++;
31         if (c[p] > 1)
32             return false;
33         p = (p + x[p]) % n;
34     }
35 
36     return p == 0;
37 }
38 
39 int main()
40 {
41     freopen("runround.in""r", stdin);
42     freopen("runround.out""w", stdout);
43 
44     int m;
45 
46     cin >> m;
47     for (int i = m + 1true; i++)
48         if (isRunaroundNumber(i))
49         {
50             cout << i << endl;
51             break;
52         }
53 
54     return 0;
55 }
56 

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理