随笔 - 6  文章 - 1  trackbacks - 0
<2012年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

留言簿

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

当年的一道很讨厌的题,其实就是道数学题。
(P.s.那时候我代码风格很坏,不要看)
 1 #include <stdio.h>
 2 int hashbiao[30001];
 3 int main()
 4 {
 5     int n , m , t , i , j , js = 0 , maxz = 0 , max = 0 , min = 100000;
 6     scanf("%d%d%d"&n, &m, &t);
 7     long long shuju[n + 1]; //其实这么写不太好 不过当时是这么写的,现在懒得改了 
 8     for (i = 0 ; i < n ; i++)
 9         scanf("%lld"&shuju[i]);
10     if (m == 1)
11         printf("0\n");
12     else
13     {
14          i = 2;
15          while (m != 1)
16          {
17               while (m % i == 0)
18               {
19                    m /= i;
20                    hashbiao[i]++;
21               }
22               if (i > maxz)
23                    maxz = i;
24               hashbiao[i++*= t;
25          }
26          int ans = 0;
27          for (i = 0 ; i < n ; i++)
28          {
29               max = 0;
30               for (j = 2 ; j <= maxz ; j++)
31               {
32                    if (hashbiao[j] == 0)
33                         continue;
34                    js = 0;
35                    while (shuju[i] % j == 0)
36                    {
37                         shuju[i] /= j;
38                         js++;
39                    }
40                    if (!js)
41                    {
42                         max = 100000;
43                         break;
44                    }
45                    if ((hashbiao[j] - 1/ js > max)
46                         max = (hashbiao[j] - 1/ js;
47               }
48               if (max < min)
49               {
50                    min = max;
51                    ans = max;
52               }
53          }
54          if (ans == 0)
55              printf("-1\n");
56          else
57              printf("%d\n", ans + 1);
58     }
59     return 0;
60 }
61 
posted on 2012-10-04 11:34 某科学的魂魄妖梦 阅读(735) 评论(0)  编辑 收藏 引用

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