在桌面上有一排硬幣,共n枚,每一枚硬幣均為正面朝上。現在要把所有的硬幣翻轉成反面朝上,規則是每次可翻轉任意n-1枚硬幣(正面向上的被翻轉為反面向上,反之亦然)。求乙個最短的操作序列(將每次翻轉n-1枚硬幣成為一次操作)。
輸入格式:
輸入只有一行,包含乙個自然數n(n為不大於100的偶數)。
輸出格式:
輸出檔案的第一行包含乙個整數s,表示最少需要的操作次數。接下來的s行每行分別表示每次操作後桌上硬幣的狀態(一行包含n個整數(0或1),表示每個硬幣的狀態:0――正面向上,和1――反面向上,不允許出現多餘空格)。
對於有多種操作方案的情況,則只需字典序最小輸出一種。
輸入樣例#1:
4
輸出樣例#1:
4設翻了x次,總共翻了y輪(指翻過的硬幣數除以這排的硬幣數)0111
1100
0001
1111
由題意得: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枚硬幣成為一次操作 輸入格式 乙個自...