#模拟#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). 这个特 ...
随机推荐
- 【LeetCode贪心#10】划分字母区间(有涉及hash数组的使用)
划分字母区间 力扣题目链接(opens new window) 字符串 S 由小写字母组成.我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中.返回一个表示每个字符串片段的长度的列表 ...
- 【Azure 微服务】新创建的Service Fabric集群,如何从本地机器上连接到Service Fabric Explorer(Service Fabric状态/错误查看工具)呢?
问题描述 当在Azure中成功创建一个Service Fabric Cluster 服务后,我们能够在它的Overview页面中发现 Service Fabric Explorer的终结点,但是打开后 ...
- Java interface 接口的使用 implements 实现----
1 package com.bytezreo.interfacetest; 2 3 /** 4 * 5 * @Description interface 接口的使用 implements 实现---- ...
- 开源.NET8.0小项目伪微服务框架(分布式、EFCore、Redis、RabbitMQ、Mysql等)
1.前言 为什么说是伪微服务框架,常见微服务框架可能还包括服务容错.服务间的通信.服务追踪和监控.服务注册和发现等等,而我这里为了在使用中的更简单,将很多东西进行了简化或者省略了. 年前到现在在开发一 ...
- Zabbix“专家坐诊”第198期问答汇总
问题一 Q:请问一下,自带的思科SNMP交换机模板,怎么不监控down的接口? A1:这种一般在自动发现规则里加个过滤器,过滤出IFSTATUS匹配(1|3)的就能实现只发现up的端口了. A2: 1 ...
- vue table 里面 slot 的模板复用 slot-scope template v-for
vue table 里面 slot 的模板复用 slot-scope template v-for 需求 经常在table里面要有自定义列,但是会有相同的自定义列,这个时候又不想写很多一样的templ ...
- 单词本z custom cu = com 一起 都, st=suet 自己, om 尾缀, 都是自己身上的 = 习惯,习俗
单词本z custom cu = com 一起 都, st=suet 自己, om 尾缀, 都是自己身上的 = 习惯,习俗 custom 来自拉丁语 consuetus cu = com st = s ...
- 教你一招,解决Github图片不显示问题(2021.1.20测试可用)
本文提供的是windows系统解决方法,linux系统和mac系统可以参考原理,修改DNS的ip地址为阿里云或者是修改hosts文件 问题 可能有些朋友和我遇到同样的问题,逛Github的时候会发现, ...
- CMake基本配置与注意事项
CMake基本配置与注意事项 目录 CMake基本配置与注意事项 CMake message打印日志 find_library查找一个NDK工具中的库 添加多个源文件 CMake中引用其他的 CMak ...
- Leetcode 招商银行-03. 点燃木棒
用广度优先,暴力搜索.代码如下 import java.util.*; class Solution { public static void main(String[] args) { Soluti ...