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 ;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值