zoukankan      html  css  js  c++  java
  • 幸运序列(lucky)

    【问题描述】

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

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

    Lsy现在手上有一个长度为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],继续第一步。

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

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

    【输入文件】

    第一行N,K;

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

    【输出文件】

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

    【输入样例】

    7 4

    4727447

    【输出样例】

    4427477

    【数据规模和约定】

    20%:  小数据

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

    因为后面的不会对前面产生影响 所以顺序处理就行了

    如果pos为偶数,那么a[i]=a[i+1]下一次就得从pos-1开始

    反之从pos开始

    对于过大的p我们可以发现:

    1.当pos=n-1时,无论怎样都不能,直接退出

    2.当出现循环时,将k取膜

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 int n,k,pos,x,vis[100001];
     7 char s[1000001];
     8 int main()
     9 {
    10     //freopen("lucky.in","r",stdin);
    11     //freopen("lucky.out","w",stdout);
    12     cin>>n>>k;
    13      cin>>s;
    14      pos=0;x=1;
    15      while (k--)
    16      {
    17         while (pos<n-1&&!(s[pos]=='4'&&s[pos+1]=='7')) 
    18           pos++; 
    19        if (pos==n-1) break;
    20        if (vis[pos]==0) vis[pos]=x;
    21        else 
    22        {
    23          k%=(x-vis[pos]);
    24        }
    25         if (pos%2==0) s[pos+1]=s[pos];
    26         else 
    27         {
    28           s[pos]=s[pos+1];
    29           pos=pos-1;
    30         }
    31         x++;
    32      }
    33     cout<<s;
    34 }
  • 相关阅读:
    返回一个整数数组中最大子数组的和
    对autocad的建议
    作业:30道四则运算——C++编程
    四则运算2
    [leetcode] Letter Combinations of a Phone Number
    [leetcode] Pow(x, n)
    [leetcode] Longest Common Prefix
    [leetcode] Binary Tree Zigzag Level Order Traversal
    [leetcode] Construct Binary Tree from Preorder and Inorder Traversal
    [leetcode] Construct Binary Tree from Inorder and Postorder Traversal
  • 原文地址:https://www.cnblogs.com/Y-E-T-I/p/7418130.html
Copyright © 2011-2022 走看看