51Nod 1024 矩陣中的不重複元素

2021-09-05 09:53:55 字數 1126 閱讀 2513

傳送門

:數學 矩陣 set

題意:乙個n行m列的矩陣,第乙個元素是a^b。每列a+1,每行b+1,形式都是(a)^(b),問矩陣中不重複元素的數量

解析:如果暴力,首先存不下100^100那麼大的數。其次,極限資料會超時。而選擇用對數,就可以輕鬆解決這兩個問題,因為最終只是求不重複元素的個數,這個用set就可以搞定,那麼只要我們能建立乙個由原來的數到其他數的對映就可以等效地統計出來。即 log2(a^b) = b * log2(a) ;

**

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

#define eps (1e-6)

#define ll long long

#define pi acos(-1.0)

#define all(a) (a.begin(),(a.end())

#define zero(a) memset(a,0,sizeof(a))

#define minus(a) memset(a,0xff,sizeof(a))

#define ios cin.tie(0) , cout.sync_with_stdio(0)

#define print(a,b) cout << "#" << (a) << " " << (b) << endl

#define debug(a,b) cout << "$" << (a) << " " << (b) << endl

#define line cout << "\n--------------------\n"

const ll inf = 1e18+100;

const int maxn = 1e6;

int m,n,a,b;

void solve()

51nod 1024 矩陣中不重複的元素

題解 本來自己是想要找到一種對映函式來建立雜湊表的,但是這資料的範圍太大了,後來看網上的大神都是用對數來做的。以後一般指數比較之類的題目,一般都先將其進行對數的轉化 include include include include include include using namespace std...

51NOD 1024 矩陣中不重複的元素

1024 矩陣中不重複的元素 project euler 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 乙個m n的矩陣。該矩陣的第一列是a b,a 1 b,a n 1 b 第二列是a b 1 a 1 b 1 a n 1 b 1 第m列是a b m 1 a 1 ...

51NOD 1024 矩陣中不重複的元素

對於一些統計不重複元素個數的題目來說,stl中的set類是乙個非常不錯的選擇 指數問題的範圍太大,很多時候可以取他的對數來代表這個指數序列的特徵 include includecmath中有對數函式等等 set中有stl的集合類 下面來看題目 乙個m n的矩陣。該矩陣的第一列是a b,a 1 b,a...