藍橋杯 歷屆試題 矩陣翻硬幣(C )

2021-10-06 20:01:29 字數 1541 閱讀 5910

問題描述:

小明先把硬幣擺成了乙個 n 行 m 列的矩陣。

隨後,小明對每乙個硬幣分別進行一次 q 操作。

對第x行第y列的硬幣進行 q 操作的定義:將所有第 ix 行,第 jy 列的硬幣進行翻轉。

其中i和j為任意使操作可行的正整數,行號和列號都是從1開始。

當小明對所有硬幣都進行了一次 q 操作後,他發現了乙個奇蹟——所有硬幣均為正面朝上。

小明想知道最開始有多少枚硬幣是反面朝上的。於是,他向他的好朋友小m尋求幫助。

聰明的小m告訴小明,只需要對所有硬幣再進行一次q操作,即可恢復到最開始的狀態。然而小明很懶,不願意照做。於是小明希望你給出他更好的方法。幫他計算出答案。

輸入格式:

輸入資料報含一行,兩個正整數 n m,含義見題目描述。

輸出格式:

輸出乙個正整數,表示最開始有多少枚硬幣是反面朝上的

樣例輸入:

2 3

樣例輸出:

資料規模和約定:

對於10%的資料,n、m <= 10^3;

對於20%的資料,n、m <= 10^7;

對於40%的資料,n、m <= 10^15;

對於10%的資料,n、m <= 10^1000(10的1000次方)。

矩陣翻硬幣 藍橋杯.

大數乘法:[藍橋杯][2023年第五屆真題]矩陣翻硬幣 (c++**) .

矩陣翻硬幣 藍橋杯.

#include

#include

#include

using namespace std;

//兩個字串相乘

string strmultiply

(string str1 , string str2)

; int i =

0, j =0;

for(i =

0; i < len1; i++)}

for(i =

0; i < len1 + len2; i++

)for

(i = len1 + len2 -

1; i >=

0; i--

)for

(j = i; j >=

0; j--

)return strresult;

}//str1 * 10^pos後(即在str1後添上pos個0),與str2作比較

int compare

(string str1, string str2, int pos)

return0;

}//對大數str開方取整

string sqrtlarge

(string str)if(

9== j) strresult +=

'9';}}

}elseif(

9== j) strresult +=

'9';}}

}return strresult;

}int main()

藍橋杯 歷屆試題 矩陣翻硬幣(大數)

問題描述 小明先把硬幣擺成了乙個 n 行 m 列的矩陣。隨後,小明對每乙個硬幣分別進行一次 q 操作。對第x行第y列的硬幣進行 q 操作的定義 將所有第 i x 行,第 j y 列的硬幣進行翻轉。其中i和j為任意使操作可行的正整數,行號和列號都是從1開始。當小明對所有硬幣都進行了一次 q 操作後,他...

藍橋杯歷屆試題 翻硬幣

歷屆試題 翻硬幣 時間限制 1.0s 記憶體限制 256.0mb 問題描述 小明正在玩乙個 翻硬幣 的遊戲。桌上放著排成一排的若干硬幣。我們用 表示正面,用 o 表示反面 是小寫字母,不是零 比如,可能情形是 oo oooo 如果同時翻轉左邊的兩個硬幣,則變為 oooo oooo 現在小明的問題是 ...

藍橋杯 歷屆試題 翻硬幣

問題描述 小明正在玩乙個 翻硬幣 的遊戲。桌上放著排成一排的若干硬幣。我們用 表示正面,用 o 表示反面 是小寫字母,不是零 比如,可能情形是 oo oooo 如果同時翻轉左邊的兩個硬幣,則變為 oooo oooo 現在小明的問題是 如果已知了初始狀態和要達到的目標狀態,每次只能同時翻轉相鄰的兩個硬...