1.解题思路
第一步:看一下所有的数是不是相等,如果是,flag=1,否则,flag=0
第二步:全体减半
第三步:所有的数都加上左边的数,相当于把左边数的一半给了这个数
第四步:判断奇偶,如果是奇数,则这个数和ans都加一
2.注意事项
注意while语句上是!flag
3.参考代码
#include<iostream> using namespace std; const int MAX=101; int kid[MAX],n,i,temp,ans=0; int main(){ bool flag; cin>>n; for(i=0;i<n;i++) cin>>kid[i]; while(!flag){ flag=true; for(i=1;i<n;i++) if(kid[0]!=kid[i]) flag=false; for(i=0;i<n;i++) kid[i]=kid[i]/2; temp=kid[n-1]; for(i=n-1;i>0;i--) kid[i]+=kid[i-1]; kid[0]+=temp; for(i=0;i<n;i++) if(kid[i]%2!=0){ kid[i]++; ans++; } } cout<<ans<<endl; return 0; }
0.0分
0 人评分
Minesweeper (C语言代码)浏览:856 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:916 |
【偶数求和】 (C语言代码)记得sum的归零时机浏览:989 |
C语言训练-计算1977!* (C语言代码)浏览:940 |
K-进制数 (C++代码)浏览:938 |
C二级辅导-同因查找 (C语言代码)浏览:705 |
C语言程序设计教程(第三版)课后习题8.3 (Java代码)浏览:1402 |
C语言训练-排序问题<1> (C语言代码)浏览:636 |
大神老白 (C语言代码)浏览:690 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:956 |