【进制转化】奇怪的捐赠

地产大亨Q先生临终的遗愿是:拿出100万元给X社区的居民抽奖,
以稍慰藉心中愧疚。
麻烦的是,他有个很奇怪的要求:
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);相同
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值