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);
}