当年的一道很讨厌的题,其实就是道数学题。
(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
某科学的魂魄妖梦 阅读(737)
评论(0) 编辑 收藏 引用