我会将这题的解题的核心思路解为将10进制转化成7进制,毕竟题目上说的很清楚7的几次方
然后附上我认为的最优解
#include<stdio.h>
int main()
{
int n = 1000000;
int sum = 0;
while (n != 0)
{
int a;
a = n % 7;
n = n / 7;
sum += a ;
}
printf("%d", sum);
return 0;
}
//输出16
先看一下看的懂嘛?看不懂?没关系就算看不懂相信你对这个代码也有种陌生的熟悉感,和十进制转化为二进制很像
while (n != 0)
{
a = n % 2;
n = n / 2;
sum += a * y;
y *= 10;
}//10进制转化为2进制的代码
**但这题要求的是最多可以分给多少人,而不是7进制的代码,**所以只需要求n可以尽可能的被7的整数倍整除几次
举个例子假设n=10,那么这题的解就是4,
3+7=3 * 7^0+1 * 7^1
那n=100呢?那么题的解就为4,
2+98=2+49*2=2 * 7^0+2 * 7^2
还抽象吗?
第一个a求的是会有几个1,也就是几个7的0次方,
后面每一个非0的a求的都是当下7的最低的次方有几个。
带入100
100%7=2,所以有2个7的0次方
100-2=98,98/7=14,14/7=2,98里面有2个7的平方
很妙的一点就是a不等于0时都代表着几个a的几次方