题目链接:
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1024
题解:
本来自己是想要找到一种映射函数来建立哈希表的,但是这数据的范围太大了,后来看网上的大神都是用对数来做的。
(以后一般指数比较之类的题目,一般都先将其进行对数的转化)
代码:
#include <set>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define met(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
int m,n,a,b;
set<double>s;
int main()
{
while(cin>>m>>n>>a>>b)
{
for(int i=a;i<a+n;i++)
for(int j=b;j<b+m;j++)
{
double ans=j*(double)log2(1.0*i);
s.insert(ans);
}
cout<<s.size()<<endl;
}
}