题意
现有一个函数 S ( n ) S(n) S(n) 表示 n n n 各个数位之和;
又有 d r ( n ) dr(n) dr(n) 满足:
S ( n ) < 10 → d r ( n ) = S ( n ) S(n)<10 \rightarrow dr(n)=S(n) S(n)<10→dr(n)=S(n)
S ( n ) ≥ 10 → d r ( n ) = d r ( S ( n ) ) S(n)\ge 10\rightarrow dr(n)=dr(S(n)) S(n)≥10→dr(n)=dr(S(n))
给定 k , d k,d k,d, 求一个 k k k 位数 n n n 满足:
d r ( n ) = d dr(n)=d dr(n)=d
若没有数满足条件,请输出 No solution
。
思路
很明显这是一道构造题。只要输出一种方法即可。
如果 k > 1 k > 1 k>1 且 d = 0 d = 0 d=0,那么显而易见,肯定没解。否则输出 d d d,再输出 k − 1 k - 1 k−1 个 0 0 0 即可满足题目要求。
构造题目推荐:CF441C。
代码
因为爬虫挂了,我直接到 CF 上交。CF的AC记录。
#include<bits/stdc++.h>
using namespace std;
int main() {
int a,b;
scanf("%d%d",&a,&b);
if(!b and a > 1) {
printf("No solution");
}
else{
printf("%d",b);
a--;
while(a--) {
printf("0");
}
}
}