• 【bzoj2242】计算器


     1 #include<bits/stdc++.h>
     2 #define inf 1000000000
     3 using namespace std;
     4 typedef long long ll;
     5 int gcd(int a,int b){return b==0?a:gcd(b,a%b);}
     6 void exgcd(int a,int b,int &x,int &y){
     7     if(b==0){x=1;y=0;return;}
     8     exgcd(b,a%b,x,y);
     9     int t=x;x=y;y=t-a/b*y;
    10 }
    11 int solve1(ll y,int z,int p){
    12     y%=p;ll ans=1;
    13     for(int i=z;i;i>>=1,y=y*y%p)if(i&1)ans=ans*y%p;
    14     return ans;
    15 }
    16 void solve2(ll y,int z,int p){
    17     p=-p;int t=gcd(y,p);
    18     if(z%t){puts("Orz, I cannot find x!");return;}
    19     y/=t;z/=t;p/=t;int a,b;exgcd(y,p,a,b);
    20     a=1LL*a*z%p;while(a<0)a+=p;
    21     printf("%d
    ",a);
    22 }
    23 map<int,int>mp;
    24 void solve3(int y,int z,int p){
    25     y%=p;if(!y&&!z){puts("-1");return;}
    26     if(!y){puts("Orz, I cannot find x!");return;}
    27     mp.clear();
    28     ll m=ceil(sqrt(p)),t=1;
    29     mp[1]=m+1;
    30     for(ll i=1;i<m;i++){t=t*y%p;if(!mp[t])mp[t]=i;}
    31     ll tmp=solve1(y,p-m-1,p),ine=1;
    32     for(ll k=0;k<m;k++){
    33         int i=mp[z*ine%p];
    34         if(i){
    35             if(i==m+1)i=0;
    36             printf("%lld
    ",k*m+i);return;
    37         }
    38         ine=ine*tmp%p;
    39     }
    40     puts("Orz, I cannot find x!");
    41 }
    42 inline int read(){
    43     int f=1,x=0;char ch;
    44     do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');
    45     do{x=x*10+ch-'0';ch=getchar();}while(ch>='0'&&ch<='9');
    46     return f*x;
    47 }
    48 int main(){
    49     int T=read(),k=read();
    50     while(T--){
    51         int y=read(),z=read(),p=read();
    52         if(k==1)printf("%d
    ",solve1(y,z,p));
    53         else if(k==2)solve2(y,z,p);
    54         else solve3(y,z,p);
    55     }
    56     return 0;
    57 }

    奇奇怪怪的bsgs裸题。

    不知道啥是bsgs的可以百度。

    别名 拔山盖世算法,百事公司算法等。

  • 相关阅读:
    01 mybatis框架整体概况(2018.7.10)-
    第一课(2018.7.10)
    JavaEE 企业级分布式高级架构师课程_汇总贴
    5-1条件运算符 & 5-2
    5-3运算符的优先级
    4-3逻辑非运算符及案例 & 4-4
    4-1逻辑与运算符介绍 & 4-2逻辑或运算符介绍
    3-3if-else条件结构 & 3-4 & 3-5
    3-2if条件结构
    3-1关系运算符
  • 原文地址:https://www.cnblogs.com/zcysky/p/6882640.html
Copyright © 2020-2023  润新知