(File IO): input:a.in output:a.out
时间限制: 1000 ms 空间限制: 262144 KB 具体限制
Goto ProblemSet
题目描述
一个十进制整数被叫做权势二进制,当他的十进制表示的时候只由0或1组成。例如
都是权势二进制而
不是。
当给定一个
的时候,计算一下最少要多少个权势二进制相加才能得到
。
输入
组测试数据。
第
行给出一个整数
第
到
行每行一个整数
输出
输出答案占
行。
每行为每个
的答案。
样例输入
1
9
样例输出
9
数据范围限制
解题思路
思路:贪心
因为每一位最多为
,所以就求出最大的数字(每个位置上)
代码
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int k,n,maxn;
int main(){
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
scanf("%d",&k);
for(int i=1;i<=k;i++)
{
maxn=0;
scanf("%d",&n);
while(n){
maxn=max(maxn,n%10);
n/=10;
}
printf("%d\n",maxn);
}
}