1个十进制整数被叫做权势二进制,当他的十进制表示的时候只由0或1组成。例如0,1,101,110011都是权势二进制而2,12,900不是。
当给定一个n的时候,计算一下最少要多少个权势二进制相加才能得到n。
只用找出这个n的数位最大的那一位,即为答案。
因为权势二进制可以再每一位都凑出1,所以只要找出数位最大值,即为需要多少个数。
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int main()
{
int ans=0,n;
scanf("%d",&n);
while(n)
{
ans=max(ans,n%10);
n/=10;
}
printf("%d",ans);
}

本文介绍了一种计算方法:确定将任意给定的十进制整数表示为最少数量的权势二进制数之和的方法。权势二进制数是指其十进制形式仅包含0和1的数。文章提供的算法通过查找给定整数的最大单个数字来确定所需的权势二进制数的数量。
306

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



