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");
}
}