题目

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

这次是牛牛的生日,大家决定让牛牛来制定规则,由于牛牛的生日是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. django学习第十五天-modelform的补充

    基于form组件和modelform组件改造图书管理系统 详情可以去图书管理系统分类中查看 基于form组件和modelform组件改造图书管理系统 modelform的补充 class BookMo ...

  2. 如何在矩池云上安装语音识别模型 Whisper

    如何在矩池云上安装语音识别模型 Whisper Whisper 是 OpenAI 近期开源的一个语音识别的模型,研究人员基于 680,000 小时的标记音频数据进行训练,它同时也是一个多任务模型,可以 ...

  3. Node.JS http server

    一.自动更新刷新 http server browser-sync dist --files "**/*" 二.http-server 三.webpack-dev-server的c ...

  4. 【Azure 环境】Azure门户中 Metrics 图表的聚合指标每项具体代表什么意思呢?

    问题描述 下图中,指标里的每项聚合指标具体代表什么呢? 问题解答 Azure Metrics 指标中提供了五种基本的聚合类型. Sum - 在聚合间隔内捕获的所有值的总和. 有时称为总聚合. Coun ...

  5. 浅入Kubernetes(4):使用Minikube体验

    Minikube 打开 https://github.com/kubernetes/minikube/releases/tag/v1.19.0 下载最新版本的二进制软件包(deb.rpm包),再使用 ...

  6. 《A Hierarchical Framework for Relation Extraction with Reinforcement Learning》论文阅读笔记

    代码 原文地址 摘要 现有的大多数方法在确定关系类型之前,需要先识别出所有的实体,这样就忽略了实体提及和关系类型之间的交互.本文提出了一种新颖的联合抽取范式,把相关实体看作是关系的参数( 首先检测一个 ...

  7. 批量删除mysql库中数据

    -- 查询构建批量删除表语句(根据数据库名称) select concat('delete from ', TABLE_NAME, ' where org_id = "<条件id> ...

  8. Java 多线程---线程优先级

    Java 实例 - 线程优先级设置 以下实例演示了如何通过setPriority() 方法来设置线程的优先级: 1 SimplePriorities.java 文件 2 public class Si ...

  9. 11 .Codeforces Round 891 (Div. 3)E. Power of Points(推公式+前缀和优化)

    E. Power of Points 题解参考 #include <bits/stdc++.h> #define int long long #define rep(i, a, b) fo ...

  10. C++容器博客汇总

    文章的原作者为 https://blog.csdn.net/qq_37529913?type=blog C++ STL 容器.迭代器.适配器(深入了解,一文学会) 1.STL容器 2.序列式容器    ...