UVA 12665(数学)

UVA 12665(数学)_第1张图片


题意:问在区间[M,N]能不能找到数字满足等式  a^3 + b^3 = c3成立



题解:从N的范围看1e+8的数据直接暴力是会超时的,那么我们观察式子,那么其实这个等式的上界是N*10+3,那么数字不会超过(10^9+3)的三分之一次方,那么a,b,最大不会超过1000,这时候直接双循环暴力就好了,复杂度1e+6



#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
#include<set>
#include<cmath>
#include<utility>
using namespace std;
#define inf 0x3f3f3f3f
#define N 5000
int main()
{
#ifdef CDZSC
	freopen("i.txt","r",stdin);
#endif
	int cas=0,n,m;
	while(~scanf("%d%d",&n,&m))
	{
		int ans=0;
		//m=1e+8;
		int k=pow(m*10+3,1.0/3);
		//printf("%d\n",k);
		for(int i=n;i<=k;i++)
		{
			for(int j=n;j<=k;j++)
			{
				int tmp=(i*i*i+j*j*j);
				if(tmp>m*10+3)continue;
				if(tmp%10==3)ans++;
			}
		}
		printf("Case %d: %d\n",++cas,ans);
	}
	return 0;
}


你可能感兴趣的:(UVA 12665(数学))