数字圈题解

大家好!今天我们来看一道题目,叫做数字圈。

先来看题目

题目描述

当我们写数字时会发现有些数字有封闭区域,有的数字没有封闭区域。

数字 0 有一个封闭区域,数字 1、2、 3 都没有封闭区域,数字 4 有一个封闭区域,数字 5 没有封闭区域,数字 6 有一个封闭区域,数字 7 没有 封闭区域,数字 8 有两个封闭区域,数字 9 有一个封闭区域。

现在你要构造一个最小的非负整数,使得它的各位数字的封闭区域的数量加起来的总和恰好等于 K。

输入格式

一个整数 K。 1 <= K <= 2500

输出格式

满足题意的最小的非负整数。

样例

输入数据 1

复制代码
40

Copy

输出数据 1

复制代码
88888888888888888888

Copy

输入数据 2

复制代码
1

Copy

输出数据 2

复制代码
0

Copy

输入数据 3

复制代码
2

Copy

输出数据 3

复制代码
8

思路很简单:

首先题目要求我们去满足情况的最小值,那解药先考虑位数问题,从题目之中可以的出只有数字8有两个封闭区,所以我们要尽量多用8,但有可能有特殊情况,比如:为1,就要输出1,然后退出程序;还有有余数的情况,剩下的就都用4即可。

代码实现:

复制代码
#include<iostream>
#include<fstream>
#include<algorithm>
#include<bits/stdc++.h>
using namespace std;
long long n,a[10000],k,l,m;
int main()
{
     cin>>m;
     if(m==1)
     {
        cout<<"0";
        return 0;
     }
     else
     {
        k=m/2;
        l=m%2;
        if(l>0)
        {
            cout<<"4";
        }
        for(int i=1;i<=k;i++)
        {
            cout<<"8";
        }
     }

    return 0;
}
相关推荐
HanhahnaH14 分钟前
各数据结构操作的时间复杂度汇总
数据结构·算法
Yzzz-F25 分钟前
CF2023D
c++·算法·dp
小小帅呀34 分钟前
学习 VLA 第6天:SWIN VIT算法原理以及复现
学习·算法
猎头南楼1 小时前
杭州算法工程师,偏大模型应用落地
算法
间歇性努力持续性发呆的野生快乐选手1 小时前
二分模板(整型,浮点型)
数据结构·c++·算法
evans在进步1 小时前
LeetCode 189 轮转数组:三次反转为什么能实现右旋?
数据结构·算法·leetcode
豆沙沙包?2 小时前
函数重载/类和对象(P14-P60)
前端·算法
lingchen19062 小时前
用MATLAB r2010b和r2016b求解微分方程组
开发语言·算法·matlab
无定义_2 小时前
Dijkstra——单源最短路径
算法·图论