题解
2026-05-29 05:28:12
发布于:浙江
20阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;cin>>n;//n次
int a[100];//数组
for(int i=1;i<=n;i++){
cin>>a[i];//输入
}
int cnt=0;//清零次数
int d=0;//判断数组是否清零
while(d==0){
d=1;
int mi=101,ma=-1,mai=0;
for(int i=1;i<=n;i++){
if(a[i]!=0) mi=min(mi,a[i]);
//如果把判断去掉,会导致最大值-0,会TLE
//统计最小值
ma=max(ma,a[i]);
//统计最大值
}
for(int i=1;i<=n;i++){
if(ma==a[i]){a[i]-=mi;break;}
//将最大值减去最小值,并break
}
for(int i=1;i<=n;i++){
if(a[i]){d=0;}//若数组某一个不为0,则继续循环
}
cnt++;//次数++
//若d=1,直接break
}
cout<<cnt;//输出
return 0;//好习惯
}
时间复杂度:
都看到这了,点个赞再走嘛!!




这里空空如也





有帮助,赞一个