CF934B的题解

· · 题解

题目分析

其实这题明显就是一道贪心题,输出的数 <= 10^{18},换句话说,你输出的数不能超过18位;

由于环数最多的是8,有两个环,因此一定要先输出18

#include<iostream>
using namespace std;
int main(void)
{
    int n;
    cin>>n;
    if(n>36)
    {
        cout<<"-1";
        return 0;
    }
    while(n)
    {
        for(int i=1;i<=n/2;++i) //一个8里面有两个环
        cout<<8;
        n=n%2;
        if(n!=0)//如果8输出完了还有剩余
        cout<<6;//再随便输出一个有环的数(注意输出正整数,所以不能输出0)
        return 0;
    }
    return 0;
}