Newcoder 70 C 幸運數字 (水 )

2021-08-29 14:03:38 字數 2070 閱讀 3472

description

定義乙個數字為幸運數字當且僅當它的所有數字都是4

44或者777。

比如說,47

、744、4

47、744、4

47、744

、4都是幸運數字而5、17

、467

5、17、467

5、17、4

67都不是。

假設現在有乙個數字d

dd,現在想在d

dd上重複k

kk次操作。

假設d

dd有n

nn位,用d1,

d2,.

..,d

nd_1,d_2,...,d_n

d1​,d2

​,..

.,dn

​表示。

對於每次操作,我們想要找到最小的x(x

x (x < n)

x(x,使得dx=

4d_x=4

dx​=

4並且dx+

1=

7d_=7

dx+1​=

7。如果x

xx為奇數,那麼我們把d

xd_x

dx​和dx+

1d_

dx+1

​都變成444;

否則,如果x

xx為偶數,我們把d

xd_x

dx​和dx+

1d_

dx+1

​都變成777;

如果不存在x

xx,那麼我們不做任何修改。

現在請問k

kk次操作以後,d

dd會變成什麼樣子。

input

第一行兩個整數n,k

n,kn,

k表示d

dd的長度和操作次數。

第二行乙個數表示d

dd。資料保證不存在前導零。

( 1≤

n≤10

5,0≤

k≤10

9)

(1\le n\le 10^5,0\le k\le 10^9)

(1≤n≤1

05,0

≤k≤1

09)

output

乙個數字表示答案。

sample input

7 44727447

sample output

solution

對於偶數字置的47

4747

,若前乙個位置是4

44,那麼就會有迴圈447

→477

→447→.

..

447\rightarrow 477\rightarrow 447\rightarrow...

447→47

7→44

7→..

. 對於奇數字置的47

4747

,若後乙個位置是7

77,那麼就會有迴圈477

→447

→477→.

..

477\rightarrow 447\rightarrow 477\rightarrow ...

477→44

7→47

7→..

. 只要有這兩種情況則不用進行後續操作,直接判斷剩餘操作次數的奇偶性即可,否則乙個個往後更新

時間複雜度o(n

)o(n)

o(n)

code

#includeusing namespace std;

const int maxn=100005;

int n,k;

char s[maxn];

int main()

else

if(!k)break;

} printf("%s\n",s+1);

return 0;

}

Newcoder 70 D 幸運數字 (組合數學)

description 定義乙個數字為幸運數字當且僅當它的所有數字都是4 44或者777。比如說,47 744 4 47 744 4 47 744 4都是幸運數字而5 17 467 5 17 467 5 17 4 67都不是。現在想知道在1.n1.n 1.n的第k kk小的排列中,有多少個幸運數字所...

python幸運數字判斷 幸運數字 小程式

問題描述 1 n個數字,每個數字的範圍 9999到9999,把這n個數字排序後,刪除奇數字的數,然後把剩餘的數按原位置排序後繼續刪除奇數字,直到剩餘乙個數為止,剩餘的數就是幸運數,輸出幸運數和它最初的位置。程式的輸入為兩個引數 數字的數量 n 具體的資料 以空格隔開 比如 6 66 666 6666...

幸運數字2

題目 定義乙個數字為幸運數字當且僅當它的所有數字都是4或者7。比如說,47 744 4都是幸運數字而5 17 467都不是。定義next x 為大於等於x的第乙個幸運數字。給定l,r,請求出next l next l 1 next r 1 next r include include include...