2 solutions
-
2
#include<bits/stdc++.h> using namespace std; const int N=110; int a[N]; int main() { int n; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } int cnt=0; while(1) { bool st=true; for(int i=1;i<=n;i++) //判断是否全0 { if(a[i]!=0) { st=false; } } if(st) break; //全零 int minv=1010,maxv=0,maxid,minid; //找到最大值最小值的位置和值 for(int i=1;i<=n;i++) { if(a[i]>maxv) { maxv=a[i],maxid=i; } if(a[i]>0&&a[i]<minv) { minv=a[i],minid=i; } } cnt++; //次数增加 a[maxid]-=a[minid]; //根据题目进行操作 } cout<<cnt; } -
0
```cpp #include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; int a[105]; for(int i=1;i<=n;i++) { cin>>a[i]; } int sum=0,x=0; while(n>=0) { x=0; int k=-1,j=101,maxx,minn; for(int i=n;i>=1;i--) { if(a[i]==0) { x++; continue; } if(a[i]>k) { k=a[i]; } if(a[i]<j) { j=a[i]; } } for(int i=1;i<=n;i++) { if(a[i]==k) { maxx=i; } if(a[i]==j) { minn=i; } } //cout<<minn<<" "<<maxx<<"*"; //cout<<x<<" "; //for(int i=1;i<=n;i++) //{ // cout<<a[i]<<" "; //} //cout<<endl; if(x==n) { // sum++; cout<<sum; return 0; } else{ sum++; } a[maxx]=a[maxx]-a[minn]; } return 0; }
- 1
Information
- ID
- 2888
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 8
- Tags
- # Submissions
- 18
- Accepted
- 6
- Uploaded By