CF355A题解

题意

现有一个函数 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)<10dr(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)10dr(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 k1 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");
        }
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值