[测试题]幸运序列(lucky)

Description

Ly喜欢幸运数字,众所周知,幸运数字就是数字位上只有4和7的数字。

但是本题的幸运序列和幸运数字完全没关系,就是一个非常非常普通的序列。哈哈,是不是感觉被耍了,没错,你就是被耍了。

Ly现在手上有一个长度为N的幸运序列a,他想这样子折腾这个序列:

  1. 如果已经折腾了k次了,就结束,否则找到一个最小的i,使得(a[i]=’4’ && a[i+1]=’7’)  //0<i<N;
  2. 找不到这样的i就结束;
  3. 如果odd(i),令a[i+1]=a[i],否则令a[i]=a[i+1],继续第一步。

Ly想让你告诉他最后序列折腾成什么样子了。

需要注意的是,本题的序列从1开始编号

Input

第一行N,K;

第二行N个数描述序列a。

Output

N个数,输出最后的序列。

Sample Input

7 4

4727447

Sample Output

4427477

Hint

20%:  小数据

100%的数据中N<=100000,K<=109

题解

找规律,模拟

可以发现只有开始位置为奇数的$447$或$477$存在循环现象,而只要没有出现循环,修改操作的总次数不会超过$N$。

接下来就只要按照题意模拟即可。

 1 #include<set>
 2 #include<map>
 3 #include<cmath>
 4 #include<ctime>
 5 #include<queue>
 6 #include<stack>
 7 #include<vector>
 8 #include<cstdio>
 9 #include<string>
10 #include<cstring>
11 #include<cstdlib>
12 #include<iostream>
13 #include<algorithm>
14 #define LL long long
15 using namespace std;
16 const int N=100000;
17
18 int n,k;
19 char ch[N+5];
20 bool vis[N+5];
21
22 int main()
23 {
24     scanf("%d%d",&n,&k);
25     scanf("%s",ch+1);
26     for (int i=1;i<n;i++) if (ch[i]==‘4‘&&ch[i+1]==‘7‘)
27     {
28         if (vis[i]&&!(k%2)) {vis[i]=1;break;}
29         vis[i]=1;
30         if (i%2) ch[i+1]=ch[i];
31         else ch[i]=ch[i+1],i-=2;
32         k--;
33         if (!k) break;
34     }
35     printf("%s",ch+1);
36     return 0;
37 }
时间: 2024-10-11 00:07:03

[测试题]幸运序列(lucky)的相关文章

幸运序列(lucky) 模拟

[问题描述] Ly喜欢幸运数字,众所周知,幸运数字就是数字位上只有4和7的数字. 但是本题的幸运序列和幸运数字完全没关系,就是一个非常非常普通的序列.哈哈,是不是感觉被耍了,没错,你就是被耍了. Ly现在手上有一个长度为N的幸运序列a,他想这样子折腾这个序列: 如果已经折腾了k次了,就结束,否则找到一个最小的i,使得(a[i]=’4’ && a[i+1]=’7’)  //0<i<N; 找不到这样的i就结束: 如果odd(i),令a[i+1]=a[i],否则令a[i]=a[i+1

纪中5日T3 1566. 幸运锁(lucky.pas/c/cpp)

1566. 幸运锁(lucky.pas/c/cpp) 题目描述 有一把幸运锁,打开它将会给你带来好运,但开锁时需要输入一个正整数(没有前导0).幸运锁有一种运算,对于一个正整数,返回他的相邻两位数字间的差,如1135,运算结果为22(会去掉前导0). 现在已知只有经过反复运算最终结果为7的数才能打开这把锁,给你一个区间[a,b],问该区间中有多少个能打开幸运锁的幸运数. 输入 第一行两个整数a,b. 输出 一个整数K,表示共有多少个这样的数. 样例输入 1 10 样例输出 1 数据范围限制 [限

2017/8/4 考试吐槽

2017 8 4 得分:110 一句话:江南皮革厂倒闭了!会的东西全带着他们的小姨子跑了!成绩统统二十分!统统二十分! A.聪明的质检员 链接:http://cogs.pro/cogs/problem/problem.php?pid=631 题意:找到一个式子:Y_i = \sum_j 1 \times \sum_j v_j ,  j \in [L_i, R_i] \text{且} w_j \ge W, j \text{是矿石编号}与标准差绝对值最小的情况. 吐槽:二分写成三分--少写一个库--

python基础(3)---流程控制

流程控制 与C语言不通的是python的流程控制代码块不是用{}花括号表示的,而是强制缩进来控制的:而且缩进必须一致,官方推荐是使用4个空格,不建议使用tab(制表符)做缩进,一是不同的系统tab所占宽度不一致,会比较乱,二是由于python要求同级缩进必须保持一致,所以有些时候看上去是对齐l,但是有的是空格有的是tab键,使得不容易排错,另外条件判断的语句不需要使用()括起来,但是条件语句后面使用: 1.条件判断--if语句 条件判断就是执行某个代码段之前先进行判断,如果符合再执行某个代码块

「CSPS 2019 十一」 贪心

一般来说,如果题目需要求一个最优解或者最小(大)花费之类的,而且除了暴力之外想不到什么好方法,那么就可能需要用贪心. 通常地,我们猜想一些步骤能不能直接使用贪心,然后再去证明这个贪心是对的. 有时候可能要多想几种贪心才能找到正确的那一种. New Year Snowmen Description 要堆起一个雪人,需要三个不同大小的雪球.现在有 \(n\) 个给定大小的雪球,问最多能堆起多少个雪人,并输出方案. Solution 每次用数量最多的三个雪球是最优的.可以用一个单调队列,每次取出最大的

CodeForces E. Lucky Array 幸运数列

CodeForces    E. Lucky Array  幸运数列 Petya loves lucky numbers. Everybody knows that lucky numbers are positive integers whose decimal representation contains only the lucky digits 4 and 7. For example, numbers 47, 744, 4 are lucky and 5, 17, 467 are n

Lucky Player幸运玩家系统开发

Lucky Player游戏APP系统开发找,定制开发Lucky Player幸运玩家平台模式,Lucky Player幸运玩家是什么Lucky Player幸运玩家源码开发公司,Lucky Player幸运玩家app模式定制开发等 一.Lucky Player幸运玩家的介绍 Lucky Player是一款基于以太坊智能合约开发的去中心化类Fomo3D游戏DAPP,下载安装APP即可参与游戏. 多种玩法,智能合约:奖励丰厚,游戏空投,3倍出局制,后面加入的玩家也能分红迅,这是一个计时器停止时最后

第016讲:序列!序列! (课后测试题及答案 )

一.列表.元组和字符串的共同点 1.都可以通过索引得到每一个元素 2.默认索引值总是从0开始 3.可以通过分片的方法得到一个范围内的元素的集合 4.有共同的操作符(重复操作符.成员关系操作符.拼接操作符) 二.序列常见的BIF 1.list():把一个可迭代对象转化为一个列表 list本身作为一个方法,有2中形态:无参数.有参数 无参数,就是生成一个空的列表 >>> list() [] >>> 有参数 >>> a = 'I love Fishc.com

SGU 258 Almost Lucky Numbers 接近幸运数(数位DP)

题意: 定义一个具有2n位的正数,其前n位之和与后n位之和相等,则为lucky数.给定一个区间,问有多少个正数可以通过修改某一位数从而变成lucky数?注意不能含前导0. 思路: 我的想法是记录那些非lucky数,再想办法来统计,后来发现有点行不通,无法知道其前后部之和是否相等.如果记录lucky数,然后通过统计每个位上的数来变成lucky数,这更麻烦,因为会重复统计,比如11和22是lucky数,而21可以通过修改1位来变成lucky数,被统计了两次. 学习了前辈的方法,也强迫一下自己别人的模