标签:代码 clu printf def return getc getchar lin line
大水题,感觉比C题水多了。。。
题目大意:给你$n$个数,求这$n$个数的$gcd$(最大公约数)
没有什么好说的了,注意特判$gcd$为$0$的情况,还有,提示一下:要开$long$ $long$!
代码如下:
#include<cstdio>
#define ll long long
inline ll read(){
ll r=0,f=1;
char c=getchar();
while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-1;c=getchar();}
while(c>=‘0‘&&c<=‘9‘)r=(r<<1)+(r<<3)+c-‘0‘,c=getchar();
return r*f;
}
ll n,a[200002],Max,Min=1e9+10,y,z;
ll gcd(ll a,ll b){
return b?gcd(b,a%b):a;
}
inline ll max(ll a,ll b){
return a>b?a:b;
}
inline ll min(ll a,ll b){
return a<b?a:b;
}
int main(){
n=(int)read();
for(int i=1;i<=n;i++){
a[i]=read();
Max=max(Max,a[i]);
Min=min(Min,a[i]);
}
z=Max-Min;
for(int i=1;i<=n;i++){
if(Max==a[i])continue;
z=gcd(z,Max-a[i]);
}
if(!z){
printf("0 0");
return 0;
}
for(int i=1;i<=n;i++)y+=(Max-a[i])/z;
printf("%lld %lld",y,z);
return 0;
}
标签:代码 clu printf def return getc getchar lin line
原文地址:https://www.cnblogs.com/wyzwyz/p/11565230.html