洛谷1146 硬幣翻轉

2021-10-07 23:54:36 字數 790 閱讀 4289

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

乙個自然數nn(nn為不大於100100的偶數)。

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

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

注:操作的字典序:對於一次操作,1表示翻轉,0表示不反轉。

但是需要你輸出的是每一次操作完的狀態,0表示正面朝上,1表示反面朝上。

輸入 #1複製

4
輸出 #1複製

4

0111

1100

0001

1111

解題思路:

每次翻n-1個硬幣,相當於每次翻一枚,所以一共需要n次。

題目中明確說明n為偶數,那麼也就是說如果每個硬幣翻n-1次,就等同與每個硬幣翻了一次,所以翻硬幣的方案就是:選中每一枚硬幣,翻一下除了這枚硬幣之外的其他硬幣。

**:

#include#include#includeusing namespace std;

int main()

return 0;

}

洛谷P1146 硬幣翻轉

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

luogu1146 硬幣翻轉

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

luogu P1146 硬幣翻轉

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