歷屆試題 矩陣翻硬幣 (大整數)

2021-07-26 12:16:31 字數 1012 閱讀 1438

歷屆試題 矩陣翻硬幣  

時間限制:1.0s   記憶體限制:256.0mb

錦囊1

錦囊2

錦囊3

問題描述

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

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

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

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

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

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

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

輸入格式

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

輸出格式

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

樣例輸入

2 3樣例輸出 1

資料規模和約定

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

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

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

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

#include #include #include #include using namespace std;

string strmul(string a,string b)

; for(i=0;i=0;i--)

for(;i>=0;i--)

return result;

}int strcmp(string a,string b,int pos)

}return 0;

}string strsqrt(string a)

歷屆試題 矩陣翻硬幣

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

歷屆試題 矩陣翻硬幣

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

歷屆試題 矩陣翻硬幣

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