Time Limit: 1000 ms Case Time Limit: 1000 ms Memory Limit: 64 MB
Total Submission: 191 Submission Accepted: 53
Total Submission: 191 Submission Accepted: 53
Description
剃完光头后,西瓜表示非常开心,于是直接骑上自行车去往勺林寺。
等骑到勺林寺的时候,头发已经都长出来了,于是西瓜决定在附近的理发店再剃一次。
然而这里的理发店老板WzyJerry表示正在做ACM练习,没空给他理发。
西瓜决定帮助老板AK。
题目是这样的:
你现在有一个培养盒,盒中没有细菌
每天早上,你可以向盒中放入一个细菌
每天晚上,一个细菌会分裂成两个。
求如果你想在将来的某天使盒中恰好有n个细菌,你最少要向盒中放入几个细菌
等骑到勺林寺的时候,头发已经都长出来了,于是西瓜决定在附近的理发店再剃一次。
然而这里的理发店老板WzyJerry表示正在做ACM练习,没空给他理发。
西瓜决定帮助老板AK。
题目是这样的:
你现在有一个培养盒,盒中没有细菌
每天早上,你可以向盒中放入一个细菌
每天晚上,一个细菌会分裂成两个。
求如果你想在将来的某天使盒中恰好有n个细菌,你最少要向盒中放入几个细菌
Input
输入数据包含多组
每组一个整数n(1≤n ≤10^9)
每组一个整数n(1≤n ≤10^9)
Output
每组数据输出一个整数x,表示最少需要放入的细菌个数
Sample Input
Original | Transformed |
5 1
5[EOL] 1[EOL] [EOF]
Sample Output
Original | Transformed |
2 1
2[EOL] 1[EOL] [EOF]
Source
1243France
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
int main(){
int n;
while (scanf("%d", &n) != EOF) {
int i, sum = 0;
while (n != 0) {
i = 1;
while (1 << i <= n)
i++;
n = n - (1 << (i - 1));
sum++;
}
printf("%d\n", sum);
}
return 0;
}