题目
旅行完了的宝宝又胖了,于是他终于下决心要戒掉零食,所以他带着他最爱的苹果回到了宝宝星,开始了在宝宝星种苹果和只吃苹果减肥的日子。经过了辛勤的劳作,宝宝种的苹果奇迹般的收获了,于是他得到了很多很多很多很多的苹果(实在太多,数不过来了,你可以认为是无穷个)。他将这很多很多个苹果按照重量从小到大进行了排序,每个土豆的编号依次为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<iostream>
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;
}
1052

被折叠的 条评论
为什么被折叠?



