A - A^B Mod C
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll ans=1;
void outans(ll a,ll b,ll c){
a=a%c;
while(b){
if(b%2==1)
ans=(ans*a)%c;
b=b/2;
a=(a*a)%c;
}
cout<<ans<<"\n";
}
int main(){
ll a,b,c;
cin>>a>>b>>c;
outans(a,b,c);
return 0;
}
C - 判决素数个数
#include <bits/stdc++.h>
using namespace std;
const int mx=1e5;
int a[mx+50];
int main(){
int x,y,ans=0;
cin>>x>>y;
a[1]=1;
if(x>y) swap(x,y);
for(int i=2;i<=mx+50;i++){
if(a[i]==0){
for(int j=2;j*i<=y;j++)
a[j*i]=1;
}
}
for(int i=x;i<=y;i++){
if(a[i]==0)
ans++;
}
cout<<ans<<"\n";
return 0;
}
D - 矩阵乘法
#include <bits/stdc++.h>
using namespace std;
int a[110][110],b[110][110],c[110][110];
int n,m,k;
int juzhen(int i,int j){
int sum=0;
for(int p=0;p<m;p++)
sum+=a[i][p]*b[p][j];
return sum;
}
int main(){
cin>>n>>m>>k;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>a[i][j];
for(int i=0;i<m;i++)
for(int j=0;j<k;j++)
cin>>b[i][j];
for(int i=0;i<n;i++){
for(int j=0;j<k;j++){
cout<<juzhen(i,j)<<" ";
}
cout<<"\n";
}
return 0;
}
E - Bash游戏
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,m;
int t;
cin>>t;
while(t--) {
scanf("%d %d", &n, &m);
if(n%(m+1)==0)
cout<<"B\n";
else
cout<<"A\n";
}
return 0;
}
H - 互质数的个数(一)
#include <bits/stdc++.h>
using namespace std;
long long oula(long long n){
long long ans=n;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0) ans=ans/i*(i-1);
while(n%i==0) n=n/i;
}
if(n>1) ans=ans/n*(n-1);
return ans;
}
int main(){
int t;
cin>>t;
while(t--){
long long n;
cin>>n;
cout<<oula(n)<<"\n";
}
return 0;
}
F - 取石子游戏
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,m,a,b,t;
double c,r;
while(scanf("%d%d",&n,&m)==2){
a=n<m?n:m;
b=n>m?n:m;
r=(sqrt(5.0)+1)/2;
c=(double)(b-a);
t=(int)(r*c);
if(t==a)
cout<<"0\n";
else
cout<<"1\n"
}
return 0;
}