题目

牛牛和他的小伙伴们高高兴兴的吃完了蛋糕,吃完蛋糕之后就到了牛牛和他的小伙伴们最喜欢的环节了——猜数 字,

这次是牛牛的生日,大家决定让牛牛来制定规则,由于牛牛的生日是4月7日,所以牛牛特别喜欢数字4和数字 7,

于是牛牛希望大家说出的数字都只包含这两个数字,但这对经常玩这个游戏的他们来说太简单了,所以牛牛加了 一个条件,

两个数字的数量需要相等,规则制定完了就可以开始游戏了,每次牛牛会喊出一个数字\(n\),

小伙伴们需要 抢先答出最小的不小于\(n\)的满足牛牛的条件的数字,谁先答出来谁就赢了。


分析

如果\(n\)的位数为奇数,输出\(4\dots 47\dots 7\)

如果答案不是\(n\)的位数同样的道理

然后只要遇到小于4的数字直接结束,

遇到4,如果4没填完填4,

否则当遇到\(\leq 7\)的数字且7没填完的话直接结束

否则把能够扔掉的4换成7直接结束,

赛时找到一堆反例hack自己代码,然后拼命填坑,但还有一个坑没填完qwq


代码

#include <cstdio>
#include <cstring>
#define rr register
using namespace std;
int len,mid; char a[100011],s[100011];
inline bool exceed(int len,int mid){
for (rr int i=1;i<=mid;++i)
if (s[i]^55) return s[i]>55;
for (rr int i=1;i<=mid;++i)
if (s[i+mid]^52) return s[i+mid]>52;
return 0;
}
signed main(){
while (scanf("%s",s+1)==1){
len=strlen(s+1),mid=len>>1;
if (len&1||exceed(len,mid)){
++mid;
for (rr int i=1;i<=mid;++i) putchar(52);
for (rr int i=1;i<=mid;++i) putchar(55);
putchar(10); continue;
}
rr int four=0,seven=0;
for (rr int i=1;i<=len;++i)
if (s[i]<52){
for (rr int j=0;j<mid-four;++j) a[j+i]=52;
for (rr int j=0;j<mid-seven;++j) a[len-j]=55;
four=mid,seven=mid; break;
}else if (four<mid&&s[i]==52) a[i]=52,++four;
else if (seven<mid&&s[i]<55){
a[i]=55,++seven;
for (rr int j=0;j<mid-four;++j) a[j+i+1]=52;
for (rr int j=0;j<mid-seven;++j) a[len-j]=55;
four=mid,seven=mid; break;
}else if (seven<mid&&s[i]==55) a[i]=55,++seven;
else{
rr int st=i-1,f=0;
for (;st;--st){
if (a[st]==55) f=1;
if (a[st]==52&&(f||seven<mid)) break;
}
if (!st){
a[1]=55,seven=1,four=0;
for (rr int j=1;j<=mid-four;++j) a[j+1]=52;
for (rr int j=0;j<mid-seven;++j) a[len-j]=55;
break;
}
a[st]=55,four=0,seven=1;
for (rr int i=1;i<st;++i)
if (a[i]^52) ++seven;
else ++four;
for (rr int j=0;j<mid-four;++j) a[j+st+1]=52;
for (rr int j=0;j<mid-seven;++j) a[len-j]=55;
four=mid,seven=mid; break;
}
for (rr int i=1;i<=len;++i) putchar(a[i]); putchar(10);
}
return 0;
}

#模拟#U137456 数字的更多相关文章

  1. 程序点滴001_Python模拟点阵数字

    尝试过很多编程语言,写过不少程序(当然,基本上都是些自娱自乐或给自己用的工具类的小玩意儿),逐渐认识到编写程序是一个不断完善.不断优化的过程——编程首先要有一个想法(目标),围绕这个目标形成最基本的功 ...

  2. PCB布线设计-模拟和数字布线的异同(转)

    工程领域中的数字设计人员和数字电路板设计专家在不断增加,这反映了行业的发展趋势.尽管对数字设计的重视带来了电子产品的重大发展,但仍然存在,而且还会一直存在一部分与模拟或现实环境接口的电路设计.模拟和数 ...

  3. 2018.07.26NOIP模拟 魔法数字(数位dp)

    魔法数字 题目背景 ASDFZ-NOIP2016模拟 题目描述 在数论领域中,人们研究的基础莫过于数字的整除关系.一般情况下,我们说整除总在两个数字间进行,例如 a | b(a能整除b)表示 b 除以 ...

  4. 【转】【MATLAB】模拟和数字低通滤波器的MATLAB实现

    原文地址:http://blog.sina.com.cn/s/blog_79ecf6980100vcrf.html 低通滤波器参数:Fs=8000,fp=2500,fs=3500,Rp=1dB,As= ...

  5. 模拟和数字低通滤波器的MATLAB实现

    低通滤波器参数:Fs=8000,fp=2500,fs=3500,Rp=1dB,As=30dB,其他滤波器可以通过与低通之间的映射关系实现. %%模拟滤波器 %巴特沃斯——滤波器设计 wp=2*pi*2 ...

  6. 10.26最后的模拟DAY2 数字对[暴力]

    数字对 [题目描述] 小H是个善于思考的学生,现在她又在思考一个有关序列的问题. 她的面前浮现出一个长度为n的序列{ai},她想找出一段区间[L, R](1 <= L <= R <= ...

  7. 模拟T1数字number

    那么第一题首先非常水的一道题…… 看一下题 数字(number) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK拥有n个数,这n个数分别是a1,a2,… ...

  8. htmlunit 模拟登录 数字验证码

    使用htmlunit的好处有两点,相比httpclient,htmlunit是对浏览器的模拟,比如你定位一个按钮,就可以执行click()方法,此外不需要象在httpclient中一样编写复杂的代码, ...

  9. CCF考试认证模拟练习——数字排序

    #include<iostream>#include<algorithm>using namespace std;struct node //定义结构体{ int num;// ...

  10. 【NOIP模拟】数字对(RMQ,二分)

    题意:小H是个善于思考的学生,现在她又在思考一个有关序列的问题. 她的面前浮现出一个长度为n的序列{ai},她想找出一段区间[L, R](1 <= L <= R <= n). 这个特 ...

随机推荐

  1. Docker进阶之02-Swarm集群入门实践

    Docker集群概述 Docker集群有2种方案: 1.在Docker Engine 1.12之前的集群模式被称为经典集群,这是通过API代理系统实现的集群,目前已经不再维护. 2.自Docker E ...

  2. 矩池云教程|体验 OpenAI 最近推出的 3D 生成模型 Shap-E!

    Shap-E 是由 OpenAI 最近推出的3D生成模型,使用者可以通过简单的文字或图像进行三维模型的生成,OpenAI 认为相比于点云的生成模型Point-E,Shap-E的收敛更快.本文将展示如何 ...

  3. Java是解释型语言么

    基础概念 JVM虚拟机会将.java类文件编译成.class文件--字节码文件,这大家都知道. 代码运行时还需要将.class字节码文件翻译成机器码才能执行. 解释执行:将编译好的字节码一行一行地翻译 ...

  4. DataGear 自定义数据可视化图表

    DataGear内置了很多常用的图表(折线图.柱状图.饼图.散点图.雷达图.地图等等),能满足大部分数据可视化需求,当内置图表无法满足时,则可以通过自定义图表或插件的方式,实现特定业务的数据可视化需求 ...

  5. consul 的 HTTP API 和使用方法

    目录 搭建起 consul Consul 的 HTTP API Service API 简单地注册服务 健康检查的配置和查询 建议读者先学习笔者的另一篇文章 学习搭建 Consul 服务发现与服务网格 ...

  6. 记一次dockerfile无法构建问题追溯

    我有一个dockerfile如下: ENTRYPOINT ["/sbin/tini","-g", "--"] CMD /home/scrap ...

  7. vscodeC++生成配置文件

    参考 https://www.cnblogs.com/harrypotterisdead/p/14207866.html 和 https://www.cnblogs.com/heyiping/p/14 ...

  8. 基于centos7 创建一个jdk8的镜像

    前言: 直接使用docker拉取jdk8镜像因有时区问题,设置后也不生效,所以干脆自己做一个 以下是Dockerfile文件 FROM centos:7 RUN ln -snf /usr/share/ ...

  9. 安卓开发基础适配器,SimpleAdapter 快速演示

    第一,主视图如下: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns: ...

  10. 深入浅出Java多线程(十):CAS

    引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第十篇内容:CAS.大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在多线程编程中,对共享资源的安全访问和同步 ...