当前位置: 代码迷 >> 综合 >> OJ 1036 正整数序列
  详细解决方案

OJ 1036 正整数序列

热度:91   发布时间:2024-01-28 18:17:34.0

描述

给定正整数n,你的任务是用最少的操作数把序列1,2,3,...,n-1,n都变成0.每次操作可从序列中选择一个或多个整数,同时减去一个相同的正整数.比如1,2,3可以把2,3同时减去2,变成1,0,1.

输入
多组测试数据,每组仅一行,为正整数n.(1<=n<=10^9)

输出
对于每组数据输出最少的操作次数

输入样例 1

1
2
3
输出样例 1

1
2
2

这表面上是计算需要运算多少次其实暗地里并不是这样的,仔细观察就会发现,其实他是问可以除多少次2才为0即把n可以除2次数输出即可。

#include <iostream>using namespace std;int main()
{int n,s;while(cin>>n){s=0;while(n>0){n/=2;s++;}cout<<s<<endl;}return 0;
}