PTA(C++):只能吃苹果的宝宝

题目

旅行完了的宝宝又胖了,于是他终于下决心要戒掉零食,所以他带着他最爱的苹果回到了宝宝星,开始了在宝宝星种苹果和只吃苹果减肥的日子。经过了辛勤的劳作,宝宝种的苹果奇迹般的收获了,于是他得到了很多很多很多很多的苹果(实在太多,数不过来了,你可以认为是无穷个)。他将这很多很多个苹果按照重量从小到大进行了排序,每个土豆的编号依次为1、2、3……N,然后他就惊奇地发现:由于宝宝星球的土壤很奇特,第i个苹果的重量正好是5^(i-1) 。

现在宝宝饿了要吃掉其中的若干个苹果。他每次拿的苹果的数目是任意的,选的苹果也是任意的。选中的苹果的总重量即每个苹果重量之和。例如:宝宝这一次拿了第一个苹果和第三个苹果,那么总重量为1+25=26。

宝宝想知道,在所有的选苹果方案里,他可以获得的第k小的“总重量”是多少。

格式

输入格式:
有多组输入样例。

第一行是一个整数T,表示有T组测试样例,0 ≤ T ≤ 70。

之后的T行中,每一行有一个数字k。(k<=2^31-1)

输出格式:
针对每一个测试样例,输出一行;格式为:
“Case #Num:Num:A”,其中,N表示第Num组样例,N表示第Num组样例,A表示他可以获得的第k大的总重量。

样例

输入样例:
2
100
4
输出样例:
Case #1: 18775
Case #2: 25

用C++解答

#include
using namespace std;
int main() {
	int t, k;
	cin >> t;
	for (int i = 1; i <= t; i++) {
		scanf("%d", &k);
		long long int w = 0, times = 1;
		while (k) {
			w += (k % 2) * times; 
			times *= 5; 
			k /= 2;
		}
		printf("Case #%d: %lld\n", i, w);
	}
	return 0;
}

你可能感兴趣的:(c++)