博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3283: 运算器
阅读量:5896 次
发布时间:2019-06-19

本文共 2077 字,大约阅读时间需要 6 分钟。

3283: 运算器

Time Limit: 20 Sec  Memory Limit: 256 MB
Submit: 340  Solved: 105
[][][]

Description

操作有3种:
 

Input

第一行一个正整数N,描述数据组数。
接下来的N行,每行4个正整数Sum,y,z,p。
Sum表述询问类型,如上题所述。对于第2种要求,若X不存在,则输出“Math Error”
 

Output

 
要求有N行输出,每行一个整数,为询问的答案。

 

Sample Input

4
1 2 10 1000
2 3 1 1000
2 2 3 4
3 2 7 9

Sample Output

24
0
Math Error
3

HINT

 

操作1个数小于501。保证Y,Z,P小于10^9

操作2个数小于51 保证Y,Z,P小于10^9 P不一定为质数
操作3个数小于51 保证Y,Z小于10^9,P小于10^9
P不一定为质数

P<=10^9

假设分解质因数后,P=p1^s1*p2^s2*……保证pi^ki<=10^5

 

Source

操作1:快速幂
操作2:扩展BSGS
操作3:扩展lucas
 
#include
#include
#include
using namespace std;typedef long long ll;struct Thash{ static const ll N=1e6+5,MOD=233333; ll tot,val[N],h[N],next[N],head[MOD+100]; void clear(){tot=0;memset(head,0,sizeof head);} void insert(ll H,ll VAL){ for(ll i=head[H%MOD];i;i=next[i]) if(h[i]==H){val[i]=VAL;return ;} h[++tot]=H;val[tot]=VAL;next[tot]=head[H%MOD];head[H%MOD]=tot; } ll get(ll H){ for(ll i=head[H%MOD];i;i=next[i]) if(h[i]==H) return val[i]; return -1; }}M;inline ll read(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}ll fpow(ll a,ll p,ll mod){ ll res=1; for(;p;p>>=1,a=a*a%mod) if(p&1) res=res*a%mod; return res;}ll gcd(ll a,ll b){ if(!b) return a; return gcd(b,a%b);}void exgcd(ll a,ll b,ll &d,ll &x,ll &y){ if(!b){d=a;x=1;y=0;return ;} exgcd(b,a%b,d,y,x); y-=a/b*x;}ll inv(ll a,ll p){ ll d,x,y; exgcd(a,p,d,x,y); return d==1?(x%p+p)%p:-1;}ll BSGS(ll a,ll b,ll mod){ M.clear(); ll m=(ll)ceil(sqrt(mod+0.5)); ll t=1; for(ll i=0;i
1) ans=(ans+C(n,m,x,x,MOD))%MOD; printf("%lld\n",ans);}int main(){ int T=read(); for(ll opt,y,z,p;T--;){ opt=read();y=read();z=read();p=read(); if(opt==1) printf("%lld\n",fpow(y,z,p)); if(opt==2) case2(y,z,p); if(opt==3) case3(z,y,p); } return 0;}

 

转载于:https://www.cnblogs.com/shenben/p/6600886.html

你可能感兴趣的文章
Test20160119
查看>>
PowerShell查询所有邮箱数据库副本复制情况
查看>>
ASP.NET新项目---------1
查看>>
Android Studio:正确引入so文件的方法
查看>>
Xshell 使用证书远程登陆linux
查看>>
linux yum源配置方法
查看>>
Android开发——实现TabHost 随手滑动切换选项卡功能(绝对实用)
查看>>
素质教育不抵应试教育?
查看>>
关于SpringBoot放在Tomcat中运行遇到的问题
查看>>
js实现字幕无缝滚动
查看>>
管理组织单元
查看>>
viewDidUnLoad的用法
查看>>
AES加密解密
查看>>
酷客多小程序会员体系上线,你不可不知道!
查看>>
objective c:import和include的区别, ""和<>区别
查看>>
CentOS 6.5上部署drbd
查看>>
spring SchedulerFactoryBean 没有创建 Scheduler的实现类bea
查看>>
基于cobbler实现自动化安装系统
查看>>
java基础专栏—IOUtils(4)
查看>>
TimeUnit使用
查看>>