P11059 [入门赛 #27] 数字 (Hard Ver.) 题解
题目大意
求出一个
-
- 在已经满足 1 的情况下,
x 的值尽可能小。
题目思路
先特殊判断各位数之和最大,也就是
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,p,a[1000001];
cin >> n >> p;
int k=n*9;
if(k<p){//特判
cout << 1;
for(int i=1;i<=n-1;i++) cout << 0;
return 0;
}
for(int i=n;i>=1;i--){//从末尾开始放
if(i!=1){//如果不是首位
if(p==1) a[i]=0;//还要留给第一位
if(p>9){//大于9,直接放9
a[i]=9;
p-=9;
}else{//留一位
a[i]=p-1;
p=1;
}
}else{
a[i]=p;
}
}
for(int i=1;i<=n;i++) cout << a[i];
return 0;
}