题解:CF2203B Beautiful Numbers
fengzhaoyu · · 题解
思路
注意到只有数字之和小于
贪心思考。那你就对每位数字从大到小去给她变成
值得一提的是第一位不能减成
代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[100],cnt;
signed main()
{
int t;
cin>>t;
while(t--)
{
int x;
cin>>x;
memset(a,0,sizeof a);
cnt=0;
int k=x;
int s=0;
while(k)
{
a[++cnt]=k%10;
s+=k%10;
k/=10;
}
for(int i=1;i<=cnt;i++)//倒过来
{
if(i>(cnt-i+1))swap(a[i],a[cnt-i+1]);
}
a[1]--;
sort(a+1,a+1+cnt);//对每位数字排序
int j=cnt;//从大到小减
while(s>=10)
{
s-=a[j];
j--;
}
cout<<(cnt-j)<<"\n";
}
return 0;
}