cuitao42


私信TA

用户名:dotcpp0634607

访问量:497

签 名:

等  级
排  名 170
经  验 6976
参赛次数 0
文章发表 18
年  龄 10
在职情况 学生
学  校
专  业

  自我简介:

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 人评分

  评论区

  • «
  • »