还是只会做水题…………orz
【1】幸运序列
【问题描述】
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开始编号
【输入文件】
第一行N,K;第二行N个数描述序列a。
【输出文件】
N个数,输出最后的序列。【输入样例】
7 44727447
【输出样例】
4427477【数据规模和约定】
100%的数据中N<=100000,K<=1E9。
【分析】
其实只有在(4, 4, 7) 和 (4, 7, 7) 的位置会出现循环 而且第一一个数的位置还必须是奇数
然后就可以华丽丽地模拟了 = = 因为后面的不会对前面产生影响 所以顺序处理就行了
#include <cstdio>
#include <iostream>
using namespace std;
int read()
{
int sign = 1, n = 0; char c = getchar();
while(c < '0' || c > '9'){ if(c == '-') sign = -1; c = getchar(); }
while(c >= '0' && c <= '9') { n = n*10 + c-'0'; c = getchar(); }
return sign*n;
}
int N, K;
int a[100005];
int m