社区讨论
新人求助,骗分过样例那题,复杂度正确提交TLE
灌水区参与者 5已保存回复 10
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 10 条
- 当前快照
- 1 份
- 快照标识符
- @lp14ykee
- 此快照首次捕获于
- 2023/11/16 19:56 2 年前
- 此快照最后确认于
- 2023/11/16 21:09 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
long long m,b,mod,t,x,y;
bool flag=0;
string id;
long long p[]={0,2,3,5,13,17,31,37};
long long read(){
long long ret=0,f=1;char ch;
while((ch=getchar())<'0'||ch>'9')if(ch=='-')f=-1;
while(ch>='0'&&ch<='9'){
(ret=(ret<<1)+(ret<<3)+(ch^48)),ch=getchar();
while(ret>=mod){
flag=1;
ret%=mod;
}
}
return ret%mod*f;
}
long long gsc(long long n,long long k,long long md,bool ord=0){
if(ord==1)return (n%md*k%md)%md;
long long p=0,q=n%md;
while(k){
if(k&1)p=(p+q)%md;
q=(q<<1)%md;
k>>=1;
}
return p;
}
long long qpow(long long n,long long k,long long md,bool ord=0){
long long p=1,q=n%md;
while(k){
if(k&1)p=gsc(p,q,md,ord)%md;
q=gsc(q,q,md,ord)%md;
k>>=1;
}
return p;
}
bool Miller_Rabin(long long n,long long a){
long long vp=n-1,r=0,pan;
while(!(vp&1))r++,vp>>=1;
pan=qpow(a,vp,n);
if(pan==1)return 1;
for(int i=0;i<r;i++){
if(pan==n-1)return 1;
pan=gsc(pan,pan,n);
}
return 0;
}
bool isp(long long n){
if(n<2)return 0;
for(int i=1;i<=7;i++){
if(n==p[i])return 1;
if(n%p[i]==0)return 0;
if(!Miller_Rabin(n,p[i]))return 0;
}
return 1;
}
int main(){
cin>>id;
if(id=="1_998244353"){
m=998244353;
mod=998244352;
cin>>t;
while(t-->0){
flag=0;
b=read();
if(flag==1)printf("%lld\n",qpow(19,b+mod,m));
else printf("%lld\n",qpow(19,b,m));
}
}else if(id=="1?"){
m=1145141;
mod=1145140;
cin>>t;
while(t-->0){
flag=0;
b=read();
if(flag==1)printf("%lld\n",qpow(19,b+mod,m));
else printf("%lld\n",qpow(19,b,m));
}
}else if(id=="1?+"){
m=5211600617818708273ll;
mod=5211600617818708272ll;
cin>>t;
while(t-->0){
flag=0;
b=read();
if(flag==1)printf("%lld\n",qpow(19,b+mod,m));
else printf("%lld\n",qpow(19,b,m));
}
}else if(id=="2p"){
cin>>t;
while(t-->0){
scanf("%lld%lld",&x,&y);
for(;x<=y;x++){
if(isp(x))putchar('p');
else putchar('.');
}
}
putchar('\n');
}
}
19 分。
还没写完/oh
回复
共 10 条回复,欢迎继续交流。
正在加载回复...