#模拟#U137456 数字
题目
牛牛和他的小伙伴们高高兴兴的吃完了蛋糕,吃完蛋糕之后就到了牛牛和他的小伙伴们最喜欢的环节了——猜数 字,
这次是牛牛的生日,大家决定让牛牛来制定规则,由于牛牛的生日是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 数字的更多相关文章
- 程序点滴001_Python模拟点阵数字
尝试过很多编程语言,写过不少程序(当然,基本上都是些自娱自乐或给自己用的工具类的小玩意儿),逐渐认识到编写程序是一个不断完善.不断优化的过程——编程首先要有一个想法(目标),围绕这个目标形成最基本的功 ...
- PCB布线设计-模拟和数字布线的异同(转)
工程领域中的数字设计人员和数字电路板设计专家在不断增加,这反映了行业的发展趋势.尽管对数字设计的重视带来了电子产品的重大发展,但仍然存在,而且还会一直存在一部分与模拟或现实环境接口的电路设计.模拟和数 ...
- 2018.07.26NOIP模拟 魔法数字(数位dp)
魔法数字 题目背景 ASDFZ-NOIP2016模拟 题目描述 在数论领域中,人们研究的基础莫过于数字的整除关系.一般情况下,我们说整除总在两个数字间进行,例如 a | b(a能整除b)表示 b 除以 ...
- 【转】【MATLAB】模拟和数字低通滤波器的MATLAB实现
原文地址:http://blog.sina.com.cn/s/blog_79ecf6980100vcrf.html 低通滤波器参数:Fs=8000,fp=2500,fs=3500,Rp=1dB,As= ...
- 模拟和数字低通滤波器的MATLAB实现
低通滤波器参数:Fs=8000,fp=2500,fs=3500,Rp=1dB,As=30dB,其他滤波器可以通过与低通之间的映射关系实现. %%模拟滤波器 %巴特沃斯——滤波器设计 wp=2*pi*2 ...
- 10.26最后的模拟DAY2 数字对[暴力]
数字对 [题目描述] 小H是个善于思考的学生,现在她又在思考一个有关序列的问题. 她的面前浮现出一个长度为n的序列{ai},她想找出一段区间[L, R](1 <= L <= R <= ...
- 模拟T1数字number
那么第一题首先非常水的一道题…… 看一下题 数字(number) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK拥有n个数,这n个数分别是a1,a2,… ...
- htmlunit 模拟登录 数字验证码
使用htmlunit的好处有两点,相比httpclient,htmlunit是对浏览器的模拟,比如你定位一个按钮,就可以执行click()方法,此外不需要象在httpclient中一样编写复杂的代码, ...
- CCF考试认证模拟练习——数字排序
#include<iostream>#include<algorithm>using namespace std;struct node //定义结构体{ int num;// ...
- 【NOIP模拟】数字对(RMQ,二分)
题意:小H是个善于思考的学生,现在她又在思考一个有关序列的问题. 她的面前浮现出一个长度为n的序列{ai},她想找出一段区间[L, R](1 <= L <= R <= n). 这个特 ...
随机推荐
- 时序数据库timescaleDB安装
一:前言相关 环境:Red Hat 8.3.1-5安装程序:PostgreSQL 14.1,TimescaleDB 2.5.1,cmake3.22.1PostgreSQL编译安装需要cmake3.4以 ...
- auth模块的一些方法
auth模块 auth模块是cookie和session的升级版,auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合的对象,而 ...
- 【C# .Net】List循环add,出现数据相同现象? 引发对引用类型和值类型的底层逻辑的思考。
赶项目时发现了一个问题,定义一个引用对象,如果在循环外定义对象,在循环内list.add(object).最后的结果却是所有的对象值都是一样的,即每add一次,都会把之前的数据覆盖. 解决方法:把对象 ...
- 【转载】nltk英文自定义分词
NLTK项目地址: https://github.com/nltk/nltk_data/tree/gh-pages/packages NLTK基础分词用例: https://www.cnblogs.c ...
- 为产品的一堆Visual Studio解决方案引入Directory.Build.props
为什么需要Directory.Build.props? 一个产品有了多个甚至几十个解决方案之后,每个解决方案里面的项目可能会引用一个dll包的不同版本,因此需要集中管理dll包的版本号. .NET的D ...
- 第126篇: 异步函数(async和await)
好家伙,本篇为<JS高级程序设计>第十章"期约与异步函数"学习笔记 ES8 的 async/await 旨在解决利用异步结构组织代码的问题. 为为此增加了两个新关键 ...
- Cocos Creator 2.x升级至Cocos Creator 3.x
1.导入类时,批量导入 2.导入 override...关键字时,批量导入 3.this.node.scale = 0.6-->this.node.setScale(0.6, 0.6); 4.n ...
- 【Azure Redis 缓存】在Azure Redis中,如何限制只允许Azure App Service访问?
问题描述 在Azure Redis服务中,如何实现只允许Azure App Service访问呢? 问题解答 Azure Redis 开启 防火墙的功能,并在防火墙中添加上App Service的出口 ...
- 聊聊 HTTP 性能优化
哈喽大家好,我是咸鱼. 作为用户的我们在 "上网冲浪" 的时候总是希望快一点,尤其是抢演唱会门票的时候,但是现实并非如此,有时候我们会遇到页面加载缓慢.响应延迟的情况. 而 HTT ...
- react中css里面 class中的 图片的相对地址 完美解决 backgroundImage
发现问题:缓存 之前react的图片,也在style里面,也无所谓. 刚做了一个输入框,change的时候改变图片,每次都刷新图片,关键是没缓存,这哪受得了 之前用的: 网上搜索各种插件,替换什么的, ...