UVA 12665(数学)

来源:互联网 发布:软件工程硕士培养方案 编辑:程序博客网 时间:2024/05/21 17:44



题意:问在区间[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 5000int main(){#ifdef CDZSCfreopen("i.txt","r",stdin);#endifint 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;}


0 0
原创粉丝点击