洛谷 夯夯的異世界之旅

題目描述
現在夯夯和朱朱餓了,他們想去喫點東西,他們發現店裏東西的價格都是2的次方倍(1,2,4,8 …)
現在夯夯和朱朱想把他們的的錢全都用掉。夯夯想知道他們最少能喫多少東西,朱朱想知道他們最多能喫多少東西?

由於穿越後遺症的原因,他們的大腦無法思考,現在你能回答他們的問題嗎?

輸入格式
多組樣例,每組樣例佔一行,每行一個整數,代表他們擁有的總錢數。

輸出格式
分別回答他們的問題,答案用空格隔開。

輸入輸出樣例
輸入
2
1
輸出
1 2
1 1
說明/提示
樣例數量 ≤ 10^410
4
總錢數 ≤ 10^{18}10
18

題目分析
最多能喫多少,顯然,全選價值爲1的能達到最多,
最少是多少,顯然是從高價到低價選,只要注意錢要剛好用完,比如9元選的是8 1,7元選的是4 2 1,六元選的是4,2
總結出規律了嗎?
最少就是把錢數化爲二進制看有多少個1
題解如下:

#include<bits/stdc++.h>
#include<algorithm>
#include<iostream>
using namespace std;
int main () {
	long n;
	long max, min;
	while(cin >> n) {
		max = n;
		min = 0;
		while(n) {
			if(n%2) min++;
			n/=2;
		}
		cout << min << " " << max << endl;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章