24h購物| | PChome| 登入
2009-09-12 22:51:59| 人氣666| 回應0 | 上一篇 | 下一篇

ACM 10533 Q10533: Digit Primes

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

作法 : 建表 之後頭減尾直接得個數 (DP)

應該還有更快的方法 待補ˇ

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

#include<stdio.h>
#include<stdlib.h>
int input()     
{     
  char cha;     
  int x=0;     
  while(cha=getchar())     
     if(cha!=' '&&cha!='\n') break;     
  x=cha-48;     
  while(cha=getchar())      
    {     
     if(cha==' '||cha=='\n') break;     
      x=x*10+cha-48;     
    }     
    return x;     
}
short int DP[1000001]={0};
char num[1000001]={0};
int DigitPrimes()
{
  int a,b,c;
  for(a=2;a<1000000;a++)
     {
      DP[a]=DP[a-1];
      if(num[a]==0&&(a%2!=0||a==2))
        {
           if(a<1000)
             for(b=3;a*b<1000000;b=b+2)
                num[a*b]=1;
           int s=0,n=a;
           while(n)
              {
                s+=(n%10);
                n/=10;
              }
            if(num[s]==0&&(s%2!=0||s==2)) DP[a]++;
        }
     }
}
main()
{
 DigitPrimes();
 int t,t1,t2;
 scanf("%d",&t);
 while(t--)
     {
       t1=input();t2=input();
       printf("%d\n",DP[t2]-DP[t1]+(DP[t1]!=DP[t1-1]));
     }
 return 0;
}

 

台長: 來源不明
人氣(666) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: ACM |
此分類下一篇:ACM 11226 11226 - Reaching the fix-point.
此分類上一篇:ACM 10326 Q10326: The Polynomial Equation

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