CQ18高一暑假前挑战赛1标程
Posted ---学习ing---
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CQ18高一暑假前挑战赛1标程相关的知识,希望对你有一定的参考价值。
【A】
#include<bits/stdc++.h> using namespace std; #define ll long long ll qpow(ll a,ll x,ll Mod){ a%=Mod; ll res=1; while(x){ if(x&1) res=res*a%Mod; a=a*a%Mod; x>>=1; } return res; } int main() { ll a,b,c; cin>>a>>b>>c; a=qpow(a,b,c); cout<<a<<endl; return 0; }
【B】
#include<bits/stdc++.h> using namespace std; #define ll long long int main() { ll N,ans; cin>>N; ans=N; ans-=N/2; ans-=N/3; ans-=N/5; ans-=N/7; ans+=N/(2*3); ans+=N/(2*5); ans+=N/(2*7); ans+=N/(3*5); ans+=N/(3*7); ans+=N/(5*7); ans-=N/(2*3*5); ans-=N/(2*5*7); ans-=N/(3*5*7); ans-=N/(2*3*7); ans+=N/(2*3*5*7); cout<<ans<<endl; return 0; }
【C】
#include<bits/stdc++.h> using namespace std; const int maxn=1010; char c[maxn]; int dp[maxn][maxn]; int main() { scanf("%s",c+1); int L=strlen(c+1),i,j; for(i=L;i>=1;i--){ for(j=i;j<=L;j++){ if(j-i+1==0) dp[i][j]=0; else if(j-i+1==1) dp[i][j]=(c[i]==c[j]?0:1); else { dp[i][j]=min(dp[i+1][j],dp[i][j-1])+1; if(c[i]==c[j]) dp[i][j]=min(dp[i][j],dp[i+1][j-1]); } } } cout<<dp[1][L]<<endl; return 0; }
【D】
#include<bits/stdc++.h> using namespace std; const int maxn=100010; int a[maxn],rt[maxn],cnt; struct node{ int l,r,val; node(){ l=r=val=0; } node(int L,int R,int V):l(L),r(R),val(V){} }s[maxn*20]; void add(int &now,int pre,int x,int pos) { now=++cnt; s[now]=node(s[pre].l,s[pre].r,s[pre].val+1); if(pos==-1) return ; if(((x>>pos)%2)==0) add(s[now].l,s[pre].l,x,pos-1); else add(s[now].r,s[pre].r,x,pos-1); } int query(int now,int pre,int x) { int res=0; for(int i=30;i>=0;i--){ int t=(x>>i)%2; if(t==0){ if(s[now].r&&s[s[now].r].val-s[s[pre].r].val>0) now=s[now].r, pre=s[pre].r, res+=(1<<i); else if(s[now].l) now=s[now].l, pre=s[pre].l; else break; } if(t==1){ if(s[now].l&&s[s[now].l].val-s[s[pre].l].val>0) now=s[now].l, pre=s[pre].l, res+=(1<<i); else if(s[now].r) now=s[now].r, pre=s[pre].r; else break; } } return res; } int main() { int N,Q,L,R,x,i; scanf("%d%d",&N,&Q); for(i=1;i<=N;i++){ scanf("%d",&a[i]); add(rt[i],rt[i-1],a[i],30); } for(i=1;i<=Q;i++){ scanf("%d%d%d",&x,&L,&R); int ans=query(rt[R+1],rt[L],x); printf("%d\n",ans); } return 0; }
以上是关于CQ18高一暑假前挑战赛1标程的主要内容,如果未能解决你的问题,请参考以下文章