luogu P1146 硬幣翻轉

2022-02-28 00:53:11 字數 738 閱讀 3870

在桌面上有一排硬幣,共n枚,每一枚硬幣均為正面朝上。現在要把所有的硬幣翻轉成反面朝上,規則是每次可翻轉任意n-1枚硬幣(正面向上的被翻轉為反面向上,反之亦然)。求乙個最短的操作序列(將每次翻轉n-1枚硬幣成為一次操作)。

輸入格式:

輸入只有一行,包含乙個自然數n(n為不大於100的偶數)。

輸出格式:

輸出檔案的第一行包含乙個整數s,表示最少需要的操作次數。接下來的s行每行分別表示每次操作後桌上硬幣的狀態(一行包含n個整數(0或1),表示每個硬幣的狀態:0――正面向上,和1――反面向上,不允許出現多餘空格)。

對於有多種操作方案的情況,則只需字典序最小輸出一種。

輸入樣例#1:

4

輸出樣例#1:

4

0111

1100

0001

1111

設翻了x次,總共翻了y輪(指翻過的硬幣數除以這排的硬幣數)

由題意得:x*(n-1)=y*n

因為n為偶數,n-1為奇數

所以x為偶數

又n與n-1互質

當x,y最小時

x=n y=n-1 所以,只要翻n次

剩下的靠樣例理解

當然處理時可以用位運算

以上摘自luogu題解

#includeint n,a[200000

];int

main()

return0;

}

luogu1146 硬幣翻轉

時空限制 1000ms 128mb 在桌面上有一排硬幣,共n枚,每一枚硬幣均為正面朝上。現在要把所有的硬幣翻轉成反面朝上,規則是每次可翻轉任意n 1枚硬幣 正面向上的被翻轉為反面向上,反之亦然 求乙個最短的操作序列 將每次翻轉n 1枚硬幣成為一次操作 輸入格式 輸入只有一行,包含乙個自然數n n為不...

洛谷1146 硬幣翻轉

在桌面上有一排硬幣,共nn枚,每一枚硬幣均為正面朝上。現在要把所有的硬幣翻轉成反面朝上,規則是每次可翻轉任意n 1n 1枚硬幣 正面向上的被翻轉為反面向上,反之亦然 求乙個最短的操作序列 將每次翻轉n 1枚硬幣成為一次操作 乙個自然數nn nn為不大於100100的偶數 第一行包含乙個整數ss,表示...

洛谷P1146 硬幣翻轉

時間限制 1.00s 記憶體限制 125.00mb 題目描述在桌面上有一排硬幣,共nn枚,每一枚硬幣均為正面朝上。現在要把所有的硬幣翻轉成反面朝上,規則是每次可翻轉任意n 1n 1枚硬幣 正面向上的被翻轉為反面向上,反之亦然 求乙個最短的操作序列 將每次翻轉n 1枚硬幣成為一次操作 輸入格式 乙個自...