zoukankan      html  css  js  c++  java
  • HDU 2973 YAPTCHA

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

    威尔逊定理,详情参见数论四大定理。从这道题应用的层面讲,我们只需要知道若p为素数,则p可整除(p-1)!+1。

    有上面的结论这道题就解决了,3k+7为素数则答案加1,为非素数则不变。(代数式简单变化一下很容易看出来,此处不赘述)

    为了防止超时,提前把答案打表打出来就好。

    输入输出挂,果断刷到第一。

    View Code
    #include <iostream>
    using namespace std ;
    bool prime[3000008] ;
    int ans[1000001] ;
    inline bool scan_d(int &num) 
    {
            char in;bool IsN=false;
            in=getchar();
            if(in==EOF) return false;
            while(in!='-'&&(in<'0'||in>'9')) in=getchar();
            if(in=='-'){ IsN=true;num=0;}
            else num=in-'0';
            while(in=getchar(),in>='0'&&in<='9'){
                    num*=10,num+=in-'0';
            }
            if(IsN) num=-num;
            return true;
    }
    void print_f(int x){
        if(x==0)return;
        print_f(x/10);
        putchar(x%10+'0');
    }
    int main() 
    {
        prime[0]=prime[1]=true ;
        for(int i=2;i<=1732;i++)
            if(!prime[i])
                for(int j=i;j*i<=3000007;j++)
                    prime[j*i]=true ;
        for(int i=1;i<=1000000;i++)
            if(!prime[3*i+7])
                ans[i]=ans[i-1]+1 ;
            else
                ans[i]=ans[i-1] ;
        int t ;
        scan_d(t) ;
        while(t--)
        {
            int n ;
            scan_d(n) ;
            if(n==1)
                putchar('0') ;
            else
                print_f(ans[n]) ;
            putchar('\n') ;
        }
        return 0 ;
    }
  • 相关阅读:
    SAS学习 day10
    SAS学习 day9
    SAS学习 day8
    Python解释器 发展史
    os. 模块
    字典
    类型1
    计算机编码
    EDA 会议整理
    2020-8-27
  • 原文地址:https://www.cnblogs.com/xiaohongmao/p/2543757.html
Copyright © 2011-2022 走看看