zoukankan      html  css  js  c++  java
  • HDU 3589 Jacobi symbol

    彻底对数学绝望了

    #include <cstdio>
    #include <cmath>
    int flag[1005],p[500],a;
    int d[100];
    int init(int s)
    {
        int len=0,tmp,h=sqrt(s+0.5);
        for(int i=0;p[i]<=h;i++)
        if(s%p[i]==0)
        {
            if(a%p[i]==0)return -1;
            while(s%p[i]==0)
            {
                d[len++]=p[i];
                s/=p[i];
            }
            if(s==1)return len;
        }
        if(s>1)
        {
            if(a%s==0)return -1;
            d[len++]=s;
        }
        return len;
    }
    int getans(int x,int s)
    {
        int tmp=s/2;
        __int64 ans=1,b=x;
        while(tmp>0)
        {
            if(tmp&1)ans=ans*b%s;
            b=b*b%s;
            tmp/=2;
        }
        if(ans!=1)return -1;
        return 1;
    }
    int main()
    {
        int i,j,k=0,n;
        for(i=2;i<1000;i++)
        {
            if(!flag[i])
            {
                p[k++]=i;
                for(j=i*i;j<1000;j+=i)
                    flag[j]=1;
            }
        }
        while(scanf("%d%d",&a,&n)!=-1)
        {
            int len=init(n);
            if(len==-1)
            {
                printf("0
    ");
                continue;
            }
            int ans=1;
            for(i=0;i<len;i++)
                ans*=getans(a,d[i]);
            printf("%d
    ",ans);
        }
        return 0;
    }
    
  • 相关阅读:
    Path Sum
    Restore IP Addresses
    Subsets II
    N-Queens
    Subsets
    Combination Sum II
    Combination Sum
    Sudoku Solver
    Valid Sudoku
    【贪心】【Uva11292】 勇者斗恶龙
  • 原文地址:https://www.cnblogs.com/forever97/p/3662208.html
Copyright © 2011-2022 走看看