欢迎大家来到思维题系列!
本类题目老少皆宜,适合茶饭后来做!
让自己觉得自己是!
废物🆗进入正题!
Quasi Binary
啧。。。。。。我们做这种构造题啊,一定要找细节!否则寸步难行!
来看第一的样例:“cin>>9;cout<<9个1 ”
第二个?cin>>32;cout<<10<<11<<11;
发现了什么?9,输出9个1;32中的3,致使它输出3个数!即可得出规律,组成n的数字中最大的一个即使被拆分的个数!
拆分个数都讲了,接下来直接看代码来理解吧!
AC code:
#include<iostream>
#include<cstdio>
using namespace std;
int ans,a[100];
int max(int x,int y){
if(x>y){
return x;
}else{
return y;
}
}
int main()
{
int n,res;
scanf("%d",&n);
for(int i=1;i<=n;i*=10)
{
res=(n/i)%10;//每一位的数值
ans=max(ans,res);
for(int j=1;j<=res;j++){
a[j]+=i;
}
}
printf("%d\n",ans);
for(;ans;ans--){
printf("%d ",a[ans]);//倒序输出,从小到大
}
return 0;
}
交给读者细品,我先溜了!。。。。。