地产大亨Q先生临终的遗愿是:拿出100万元给X社区的居民抽奖,
以稍慰藉心中愧疚。
麻烦的是,他有个很奇怪的要求:
1. 100万元必须被正好分成若干份(不能剩余)。
每份必须是7的若干次方元。
比如:1元, 7元,49元,343元,...
2. 相同金额的份数不能超过5份。
3. 在满足上述要求的情况下,分成的份数越多越好!
请你帮忙计算一下,最多可以分为多少份?
思路:其实是一个进制转化问题。把100万转化成由7进制表示,那么每个位
就对应了7^0, 7^1, 7^2...的个数。(这里题目条件限制,所以肯定不会有
value-----要转换的整形值
string-----转换后的字符串
radix------表示基数(2, 8, 10, 16)等进制基数
本函数与char * itoa(int, char *, int);相同
以稍慰藉心中愧疚。
麻烦的是,他有个很奇怪的要求:
1. 100万元必须被正好分成若干份(不能剩余)。
每份必须是7的若干次方元。
比如:1元, 7元,49元,343元,...
2. 相同金额的份数不能超过5份。
3. 在满足上述要求的情况下,分成的份数越多越好!
请你帮忙计算一下,最多可以分为多少份?
思路:其实是一个进制转化问题。把100万转化成由7进制表示,那么每个位
就对应了7^0, 7^1, 7^2...的个数。(这里题目条件限制,所以肯定不会有
一位上的数是==6的,不然无解)
代码:
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
// 直接求一个数字的7进制表示
// 如果没有函数,可以自己用长除法取余数的方式
char arr[1024] = { 0 };
_itoa(1000 * 1000, arr, 7);
int sum = 0;
for (int i = 0; i < strlen(arr); i++)
{
sum += arr[i] - '0';
}
printf("%s\n", arr);
printf("result=%d", sum);
return 0;
}
学到的点:
_itoa函数:把整型数字转化成相应进制形式覆盖存储到字符数组中。
char*_itoa(int value,char*string,int radix);value-----要转换的整形值
string-----转换后的字符串
radix------表示基数(2, 8, 10, 16)等进制基数
本函数与char * itoa(int, char *, int);相同