洛谷 夯夯的异世界之旅

题目描述
现在夯夯和朱朱饿了,他们想去吃点东西,他们发现店里东西的价格都是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;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值