A
#include<iostream> #include<bitset> using namespace std; long long P,A; const long long maxn=1e9; bool prime(){ //判断是否为素数 for(int i=2;i*i<=P;i++){ if(P%i == 0) return 1; } return 0; } int main(){ while(cin>>P>>A){ if(P==0&&A==0)break; long long a=A,p=P,s=1,i=0; while(p){ //快速幂 if(p & 1) s=(a*s)%P; //取模 ((a*b)%c==((a%c)*(b%c))%c a=(a*a)%P; p>>=1; } if(s==A && prime()) cout<<"yes\n"; else cout<<"no\n"; } return 0; }
B
#include<iostream> using namespace std; const int maxn=45000; int N,T,M; int main(){ cin>>T; while(T--){ cin>>M; cin>>N; int A,B; long long sum=0; while(N--){ cin>>A>>B; long long a=A,b=B,s=1; while(b){ //快速幂 if(b&1) s=(s*a)%M; a=(a*a)%M; b>>=1; } sum+=s; //(a+b)%c==((a%c)+(b%c))%c } cout<<sum%M<<endl; } return 0; }
C
公式:
#include<iostream> using namespace std; const int maxn=1000000007; long long T,N; long long mod(){ long long b=N-1,a=2; long long s=1; while(b){ if(b&1) s=(s*a)%maxn; //快速幂 a=(a*a)%maxn; b>>=1; } if(s==0)return maxn-1; //s==0 即为1e9+7 else return s-1; } int main(){ cin>>T; while(T--){ cin>>N; cout<<mod()<<endl; } return 0; }
D
把每个出现过的ID记录一下
#include<iostream> using namespace std; const int Max=1e4+1; int a[Max]={0},N,ai,m,ii,M; int main(){ while(cin>>N){ for(int i=0;i<Max;i++)a[i]=0; m=0;M=N; while(N--){ cin>>ai; a[ai]++; } for(int i=0;i<Max;i++){ if(m<a[i]){m=a[i];ii=i;} } if(2*m>M) cout<<ii<<endl; else cout<<"-1\n"; } return 0; }
E
#include<iostream> using namespace std; int T,N; int main(){ cin>>T; while(T--){ cin>>N; long long s=1,a=N,b=N; while(b){ if(b&1) s=(s*a)%10; //快速幂,取 mod 10 a=(a*a)%10; b>>=1; } cout<<s<<endl; } return 0; }
F
#include<iostream> using namespace std; int N,M; int main(){ while(cin>>N>>M){ if(N==0&&M==0)break; long long s=1,a=N,b=M; while(b){ if(b&1) s=(s*a)%1000; a=(a*a)%1000; b>>=1; } cout<<s<<endl; } return 0; }
G
#include<iostream> using namespace std; int T,Q; int sum; const int maxn=5e8; bool iff(int mod){ sum=0; //零的个数 while(mod){ sum+=mod/5; mod/=5; } if(sum>=Q)return 1; return 0; } int main(){ cin>>T; for(int tail=1;tail<=T;tail++){ cin>>Q; int l=0,r=maxn,mod=(l+r)/2; while(r>=l){ //二分法 if(iff(mod))r=mod-1; else l=mod+1;; mod=(l+r)/2; } printf("Case %d: ",tail); if(sum==Q)cout<<l<<endl; //此时l-1=r=mod else cout<<"impossible\n"; } return 0; }
H
acos(-1)=
#include<iostream> #include<cmath> #include<cstdio> using namespace std; const double pi=acos(-1); int T,n,b,w; double a[10000]; double max(double a,double b){ if(a>b)return a; else return b; } bool mes(double mod){ int sum=0; for(int i=0;i<n;i++){ sum+=int(a[i]/mod); } if(sum>=b)return 1; return 0; } int main(){ cin>>T; while(T--){ cin>>n>>b; b++;double Max=0; for(int i=0;i<n;i++){ cin>>w;a[i]=w*w*pi; Max=max(Max,a[i]); } double l=Max/b,r=Max,mod=(Max+l)/2; while(r-l>=0.00001){ // 二分 //mod=(l+r)/2; if(mes(mod))l=mod; else r=mod; mod=(l+r)/2; } printf("%.4lf\n",mod); } return 0; }
I
#include<iostream> #include<cstdio> using namespace std; #define f(x) (8*x*x*x*x+7*x*x*x+2*x*x+3*x+6) int T; long long X; bool fan(long double mod){ if(f(mod)<X) return 1; //判断大小关系 else return 0; } int main(){ cin>>T; while(T--){ cin>>X; long double l=0,r=100,mod=(l+r)/2; while(r-l>=10e-7){ //二分法 if(fan(mod))l=mod; else r=mod; mod=(l+r)/2; } if(X>=6 && X<=807020306) //f(x)递增[0,100],f(0)=6,f(100)=807020306 printf("%.4lf\n",mod); else cout<<"No solution!\n"; } return 0; }
J
#include<iostream> #include<algorithm> using namespace std; const int maxn=1e5+10; int T,N,S,n,sum; int a[maxn]; int main(){ cin>>T; while(T--){ cin>>N>>S; sum=0; for(int i=0;i<N;i++){cin>>a[i];sum+=a[i];} if(sum<S){cout<<"0\n";continue;} //判断是否有值 n=a[0]; int s,ff=1,j; for(int i=1;i<N;i++){a[i]+=a[i-1];if(a[i]>=S && ff){s=a[i];ff=0;j=i;}} //前缀和,并记录第一次大于S的值 int i=0; while(j<N){ //j左移,i右移,过程中保存j-i最小值 if(j==N-1){ if(a[j]-a[i+1]<S)break; else{i++;s=min(s,j-i);} } else{ j++; while(a[j]-a[i+1]>=S){ i++; } s=min(s,j-i); } } cout<<s<<endl; } return 0; }