Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4241097
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: C/C++

2011-06-28 15:59:05

    玲玲喜欢通过玩数字游戏的方式来加深别人对她的印象。她最喜欢的一个数字游戏是让人给出一个数N,然后她会立即说出N的阶乘最末尾有多少个连续的零。很显 然,这会让别人会对她印象深刻,因为,一般来说N!是一个非常大的数。例如,N为100时,100!会比地球上所有原子的数目还要大,但玲玲可以很快说出 100!末尾有连续24个0。但是,她的一些朋友通常不是以10为进制的。这时,玲玲却不知道该怎么修改她的技巧来适应这些朋友了。
题目: 新建 Microsoft Word 1文档.rar  
代码: test.rar  

  1. #include <stdio.h>
  2. #include <limits.h>
  3. int main(void)
  4. {
  5.    int a[30], b[30], count, c=0, n, k, m, i, j, s=0, min;
  6.    scanf("%d", &count);
  7.    while (++c<=count)
  8.    {
  9.         scanf("%d%d", &k, &n);
  10.         if ((m=k)&1) j=0;
  11.         else
  12.         {
  13.             j=*b=1;
  14.             while (!((m>>=1)&1)) ++*b;
  15.             *a=2;
  16.         }
  17.         for (i=3; m>1; i+=2)
  18.         {
  19.             if (m%i==0)
  20.             {
  21.                 b[j]=1;
  22.                 while ((m/=i)%i==0) b[j]++;
  23.                 a[j++]=i;
  24.             }
  25.         }
  26.         min=INT_MAX;
  27.         while (j)
  28.         {
  29.             for (s=0, i=a[--j]; i<=n; s+=n/i, i*=a[j]);
  30.             if ((a[j]=s/b[j])<min) min=a[j];
  31.         }
  32.         printf("Scenario #%d:%d\n", c,min);
  33.    }
  34.    return 0;
  35. }

  1. ywx@yuweixian:~/yu/c$ gcc test.c -o test
  2. ywx@yuweixian:~/yu/c$ chmod u+x test
  3. ywx@yuweixian:~/yu/c$ ./test
  4. 3
  5. 25
  6. 10100
  7. Scenario #1:1261
  8. 4510000
  9. ^C
  10. ywx@yuweixian:~/yu/c$ ./test
  11. 3
  12. 2
  13. 5
  14. Scenario #1:3
  15. 10
  16. 100
  17. Scenario #2:24
  18. 45
  19. 10000
  20. Scenario #3:2498
  21. ywx@yuweixian:~/yu/c$ ls
阅读(1022) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~