数字圈题解

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

先来看题目

题目描述

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

数字 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;
}
相关推荐
_深海凉_6 分钟前
LeetCode热题100-寻找两个正序数组的中位数
算法·leetcode·职场和发展
旖-旎1 小时前
深搜练习(电话号码字母组合)(3)
c++·算法·力扣·深度优先遍历
谭欣辰1 小时前
C++快速幂完整实战讲解
算法·决策树·机器学习
Mr_pyx1 小时前
【LeetHOT100】随机链表的复制——Java多解法详解
算法·深度优先
AIFarmer1 小时前
【无标题】
开发语言·c++·算法
AGV算法笔记2 小时前
CVPR 2025 最新感知算法解读:GaussianLSS 如何用 Gaussian Splatting 重构 BEV 表示?
算法·重构·自动驾驶·3d视觉·感知算法·多视角视觉
勤劳的进取家3 小时前
数据链路层基础
网络·学习·算法
Advancer-3 小时前
第二次蓝桥杯总结(上)
java·算法·职场和发展·蓝桥杯
ん贤3 小时前
加密算法(对称、非对称、哈希、签名...)
算法·哈希算法
superior tigre4 小时前
78 子集
算法·leetcode·深度优先·回溯