An Easy Problem(信息学奥赛一本通-T1223)
生活随笔
收集整理的這篇文章主要介紹了
An Easy Problem(信息学奥赛一本通-T1223)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【題目描述】
給定一個(gè)正整數(shù)N,求最小的、比N大的正整數(shù)M,使得M與N的二進(jìn)制表示中有相同數(shù)目的1。
舉個(gè)例子,假如給定的N為78,其二進(jìn)制表示為1001110,包含4個(gè)1,那么最小的比N大的并且二進(jìn)制表示中只包含4個(gè)1的數(shù)是83,其二進(jìn)制是1010011,因此83就是答案。
【輸入】
輸入若干行,每行一個(gè)數(shù)n(1≤n≤1000000),輸入"0"結(jié)束。
【輸出】
輸出若干行對(duì)應(yīng)的值。
【輸入樣例】
1
2
3
4
78
0
【輸出樣例】
2
4
5
8
83
【源程序】
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #define INF 999999999 #define N 1001 using namespace std; int main() {int n;while(scanf("%d",&n)!=EOF&&n){int cnt=0;int temp=n;while(temp>0){if(temp%2)cnt++;temp/=2;}int sum=0;while(1){temp=++n;while(temp>0){if(temp%2)sum++;temp/=2;}if(cnt==sum){cout<<n<<endl;break;}sum=0;}}return 0; }?
總結(jié)
以上是生活随笔為你收集整理的An Easy Problem(信息学奥赛一本通-T1223)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux 正则表达式基础
- 下一篇: 暑期训练日志----2018.8.10