24h購物| | PChome| 登入
2009-09-15 19:30:54| 人氣1,095| 回應0 | 上一篇 | 下一篇

ACM 10780 Q10780: Again Prime? No time.

推薦 0 收藏 0 轉貼0 訂閱站台

作法 : 模仿 d122. Oh! My Zero!!

當我們要知道N!裡有幾個A的幾次方時,(A是質數)

有一個算法是說 假使答案是A^t

那麼t=(int)N/A+(int)N/(A^2)+(int)N/(A^3)+... (N/A^?=0 停止)

所以我們必須先將M分解得到質因數...然後去看次方

/**********************************************************/

#include<stdio.h>  
#include<stdlib.h>  
#include<math.h>  
int Prime[5200]={0},p;  
int prime()  
{  
  char num[5001]={0};  
  int a,b,m=0;  
 for(a=2;a<5000;a++)     
      if(num[a]==0)     
        {     
           Prime[m]=a;     
           m++;     
           for(b=2;a*b<=5000;b++)     
             num[a*b]=1;     
        }  
   return m;  
}  
int value[50],T[50],top;
int Divisors (int num)
{
   int a,b,C=1;
   for(a=0;a<p&&Prime[a]*Prime[a]<=num&&num!=1;a++)
      {
        int time=0;
        if(num%Prime[a]==0)
          {
             while(num%Prime[a]==0)
                {
                   num/=Prime[a];
                   time++;
                }
             ++top;
             value[top]=Prime[a];
             T[top]=time;
          }
      }
    if(num!=1)
       {
             ++top;
             value[top]=num;
             T[top]=1;
       }
    return C;
}
main()  
{  
 p=prime(); 
 int t,n,m,a,time=0; 
  /*freopen("input.txt", "rt", stdin);
  freopen("output.txt", "w+t", stdout);*/
 scanf("%d",&t);
   while(t--)
    {
       scanf("%d %d",&n,&m);
       top=0;
       Divisors (n);
       int MIN=2147483647;
       for(a=1;a<=top;a++)
          {
            int sum=0,temp=value[a];
            while(temp<=m)
               {
                 sum+=m/temp;
                 temp*=value[a];
               }
            if(sum/T[a]<MIN) MIN=sum/T[a];
          }
       printf("Case %d:\n",++time);
       if(MIN==0) printf("Impossible to divide\n");
       else printf("%d\n",MIN);
    }
 return 0;     
}  

台長: 來源不明
人氣(1,095) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: ACM |
此分類下一篇:ACM 11057 11057 - Exact Sum
此分類上一篇:ACM 10497 Q10497: Sweet Child Makes Trouble

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文