• JZOJ5809 数羊


    Description

      牧羊人A和牧羊人B总是很无聊,所以他们要玩一个游戏。A有a只羊,B有b只羊。他们想要知道a^b的因子和是多少。这就很为难两个牧羊人了,由于答案太大,你能不能告诉我答案取模9901的数。

    Input

      仅一行,为两个正整数a和b

    Output

      a^b的因子和对9901的余数。

    Sample Input

      2 3

    Sample Output

      15

    Data Constraint

      对于100%的数据,0≤a,b≤50000000

    Solution

      试除法,暴力加上奇怪的方法再加o2就能卡过。

     1 %:pragma GCC optimize(2)
     2 %:pragma GCC optimize("unroll-loops")
     3 #include<cstdio>
     4 #include<cmath>
     5 #define N 9901
     6 using namespace std;
     7 int a,b,sum,l,t[1000];
     8 int main()
     9 {
    10     freopen("sheep.in","r",stdin);
    11     freopen("sheep.out","w",stdout);
    12     scanf("%d%d",&a,&b);
    13     l=1;
    14     sum=1;
    15     if (!(a&1)) {
    16         int p=0;
    17         for (;!(a&1);) {
    18             a>>=1;
    19             p+=b;
    20         }
    21         t[1]=3;
    22         int k=1,c=1;
    23         for (register int y=2,e;k<<1<=p;e=t[c]-y,t[++c]=(t[c-1]*y+e)%N,y=(y*y)%N,k<<=1);
    24         for (register int j=k+1;j<=p;++j){
    25             t[c]=t[c]<<1|1;
    26             if (t[c]>N)
    27                 t[c]%=N;
    28         }
    29         sum=(sum*t[c])%N;
    30     }
    31     for (int i=3;i<=a;i+=2)
    32         if (!(a%i))
    33         {
    34             int p=0;
    35             for (;a%i==0;) {
    36                 a=a/i;
    37                 p+=b;
    38             }
    39             t[1]=i+1;
    40             int k=1,c=1;
    41             for (register int y=i,e;k<<1<=p;e=t[c]-y,t[++c]=(t[c-1]*y+e)%N,y=(y*y)%N,k<<=1);
    42             for (register int j=k+1;j<=p;j++){
    43                 t[c]=t[c]*i+1;
    44                 if (t[c]>N) t[c]%=N;
    45             }
    46             sum=(sum*t[c])%N;
    47         }
    48     printf("%d",sum);
    49 }
    View Code
     
  • 相关阅读:
    【HYSBZ】1588 营业额统计
    【HYSBZ】1503 郁闷的出纳员
    【ZOJ】3228 Searching the String
    【ZOJ】3494 BCD Code
    【HDU】1754 I Hate It
    【HDU】3247 Resource Archiver
    【POJ】3481 Double Queue
    EdgeCore初学习
    go mod常用命令 已经 常见问题
    GO语言内存操作指导—unsafe的使用
  • 原文地址:https://www.cnblogs.com/Tokisaki-Kurumi/p/9479255.html
Copyright © 2020-2023  润新知