CodeForces - 934B A Prosperous Lot

180408套题的e题

题目意思就是你输入一个数a 然后输出一个数b 

要求数b必须有a个圈圈

在数字0-9中 0 4 6 9有一个圈圈 8有两个圈圈

这道题要求我们输出的不大于10的18次方的正整数

对的 必须是正整数  所以我们要注意第一个数不能为0

因为这个数不大于10的18次方 就是最大是888888888888888888

36个圈圈 所以大于36的a我们都直接输出-1就可以了

开一个数组c去放输入1-36时候输出的数b 然后我把c[1]弄为6

对于其他数 我的话就是是偶数就用8去填充 是奇数就是后面加个0

下面是代码

#include <bits/stdc++.h>

using namespace std;

int main() {
    long long a,b,c[37];
    while(scanf("%lld",&a)!=EOF) {
        c[1] = 6;
        c[2] = 8;

        for(int i = 3; i <= 36; i++) {
            if(i & 1) c[i] = c[i-1] * 10;
            else {
                c[i] = c[i-2] * 10 + 8;
            }
        }

        if(a <= 36)
            printf("%lld\n",c[a]);
        else printf("-1\n");
    }
} 

猜你喜欢

转载自blog.csdn.net/qq_41989228/article/details/79919142