[HDU]1405The Last Practice

http://acm.hdu.edu.cn/showproblem.php?pid=1405

任何数都可以用若干个质数组成,这道题就是求一个数有哪些质数组成,其中相同的要用次方表示。负数时,结束程序。

但是这道题有巨坑,就是格式。

1,每个输出数字后面都有空格(每组输出最后有一个空格)
2,两测试数据间有空行(最后一组数据后面没有空行)

真是坑爹的格式啊啊啊啊!


#include"stdio.h"
#include"stdlib.h"
#include"math.h"
#include"string.h"
int a[65540];
int main()
{
     int s,n,i,m=1,flag,f=0;   //f纯属格式需要 
     while(scanf("%d",&s)!=EOF)
     {
         if(s<0)  break;
         memset(a,0,sizeof(a));    //初始化 
         flag=0;
         n=s;
         for(i=2;n!=1; )        //求质数因子 
         {
             if(n%i==0)
             {
                   a[i]++;        //在开辟的数组相应位置+1,这种作法只能用于数字不大的情况 
                   n=n/i;
                   i=2;
             }
             else i++;
         }   
         if(f)
         printf("\n");
         f=1;
         printf("Case %d.\n",m++);
         for(i=2;i<=s;i++)
         {
             if(a[i]!=0)
             {
                printf("%d %d ",i,a[i]);
                flag=1;                    //之前以为每行最后不要空格,弄个格式,请无视. 
             }   
         } 
         printf("\n");
     }
}

 

posted @ 2013-08-13 09:19  天际。  阅读(505)  评论(0编辑  收藏  举报