最大公约数
#include <bits/stdc++.h>
using namespace std;
const int N=1000010;
int c[N];//c[i]为 i 出现次数
int main(){
int n,t=0,x;
cin>>n;
for(int i=0;i<n;i++){
cin>>x;
t=max(t,x);
int m=sqrt(x);
for(int i=1;i<=m;i++){
if(x%i==0) {
c[i]++;
if(x!=i*i) c[x/i]++;
}
}
}
x=t;
for(int i=1;i<=n;i++){//第一行到第n行输出
while(c[x]<i) x--;//x为最大公约数,i为出现次数
cout<<x<<endl;
}
return 0;
}
最大公约数
#include <bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
return b?gcd(b,a%b):a;
}
int main(){
int x,y;//x是最小公约数,y是最大公倍数
int ans;
cin>>x>>y;
if(x==y) ans--;
y=x*y;//两数乘积保存到y中
for(int i=1;i<=sqrt(y);i++){
if(y%i==0&&gcd(i,y/i)==x) ans+=2;//i与x*y/i是一对
}
cout<<ans<<endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll qmi(ll a,ll b,ll p){
ll ans;
while(b){
if(b&1) ans=ans*a%p;
b>>=1;
a=a*a%p;
}
return ans;
}
int main(){
ll a,b,p;
cin>>a>>b>>p;
cout<<a<<"^"<<b<<" mod "<<p<<"="<<qmi(a,b,p)<<endl;
return 0;
}