如下为我的代码:
#include<bits/stdc++.h>
using namespace std;
int n,a[1001];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]),a[i]++,a[i]*=200000;
sort(a+1,a+n+1);n=unique(a+1,a+n+1)-a;
for(int i=a[1];i>=0;i--,i--){
bool f=true;
for(int j=1;j<=n;j++){
while(a[j]%i>=200000){f=false;break;}
}
if(f){
printf("%.6lf",i/200000.0);
return 0;
}
}
return 0;
}
只有 85 分。
但是把 while 改成 if 就过了。
所以它们理论上不是一样的吗?