UVa 11384打卡

算法竞赛入门经典训练指南打卡

题目链接:UVa 11384

思路

对于1,,2,3,4,5,6.....n,最终的结果也就是要把所有的数变为0,即所有的数都相同
所以我们只需要每次操作让不同的数变少即可,一开始有n个数(不算0),最终要变为只有1个数
因为是递增,所以每次操作最多可以使一半的数变成相同的数
所以只需要判断什么时候n==1即可,此时除了0之外,只剩下一个数
将其变为0即可
注意:n指有多少个还剩多少个不同的数字,但是不包含0

主要是今天两道打卡题难度不高,没事做了,所以开始绕圈圈

代码如下:

#include <iostream>

using namespace std ;

int main(){
    int n , ans ;
    while (scanf("%d" , &n) != EOF){
        ans = 1 ;   //n为1的时候需要进行1次操作
        while (n != 1){
            ans ++ ;    //操作次数+1
            n /= 2 ;    //操作一次后只有n/2个不同的数
        }
        cout << ans << endl ;
    }
}

猜你喜欢

转载自blog.csdn.net/just_gong/article/details/107932821
今日推荐