1. 程式人生 > >51Nod1024 矩陣中不重複的元素(等價代換)

51Nod1024 矩陣中不重複的元素(等價代換)

如果直接算a^b次方,資料肯定會溢位,所以可以等價代換。logN(a)=logN(b),說明a==b,所以a^b可以等價為log2(a^b)==log2(a^b),等價於a^b==a^b。log2(a^b)=b*log2(a)。結果再用set維護。

#include<iostream>
#include<algorithm>
#include<cmath>
#include<set>
using namespace std;
int main()
{	
	int m,n,a,b;
	cin>>m>>n>>a>>b;
	set<double> s;
	for(int i=a;i<a+n;i++)
		for(int j=b;j<b+m;j++)
			s.insert(1.0*j*log2(i));
	cout<<s.size()<<endl;
	return 0; 
}