定義乙個數字為幸運數字當且僅當它的所有數字都是4或者7。
比如說,47、744、4都是幸運數字而5、17、467都不是。
假設現在有乙個數字d,現在想在d上重複k次操作。
假設d有n位,用d1,d2,...,dn表示。
對於每次操作,我們想要找到最小的x (x < n),使得dx=4並且dx+1=7。
如果x為奇數,那麼我們把dx和dx+1都變成4;
否則,如果x為偶數,我們把dx和dx+1都變成7;
如果不存在x,那麼我們不做任何修改。
現在請問k次操作以後,d會變成什麼樣子。
第一行兩個整數n,k表示d的長度和操作次數。第二行乙個數表示d。資料保證不存在前導零。
1 <= n <= 100,000
0 <= k <= 1000,000,000
乙個數字表示答案。示例1
7 44727447
4427477示例2
4 24478
4478分析:找規律,發現「......447...」的時候,如果7前面的4的序號是偶數(這裡序號從1開始),
就變為「......477......」,下次找到4的時候,4的序號是奇數,就變成「......447...」,
這是乙個迴圈,這樣就好辦多了。。。
#includechar s[200000view code];int
main()
i++;
}if(flag==0) break
;
if(s[i+2]=='
7'&&i%2==0)//
兩個7 ,477->447
if(i-1>=0&&s[i-1]=='
4'&&i%2==1
)
if(i%2==0) s[i+1]='4'
;
else s[i]='7'
; }
printf(
"%s\n
",s);
return0;
}
牛客練習賽13 幸運數字
定義乙個數字為幸運數字當且僅當它的所有數字都是4或者7。比如說,47 744 4都是幸運數字而5 17 467都不是。定義next x 為大於等於x的第乙個幸運數字。給定l,r,請求出next l next l 1 next r 1 next r 兩個整數l和r 1 l r 1000,000,000...
牛客練習賽13 幸運數字I II III
a幸運數字 時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 定義乙個數字為幸運數字當且僅當它的所有數字都是4或者7。比如說,47 744 4都是幸運數字而5 17 467都不是。現在,給定乙個字串s,請求出乙個字...
牛客練習賽13 A 幸運數字I
定義乙個數字為幸運數字當且僅當它的所有數字都是4或者7。比如說,47 744 4都是幸運數字而5 17 467都不是。現在,給定乙個字串s,請求出乙個字串,使得 1 它所代表的整數是乙個幸運數字 2 它非空 3 它作為s的子串 不是子串行 出現了最多的次數 不能為0次 請求出這個串 如果有多解,請輸...