费马大定理:当n>2时,不定方程an+bn=cn没有正整数解。比如a3+b3=c3没有正整数解。为了活跃气氛,我们不妨来个搞笑版:把方程改成a3+b3=c3,这样就有解了,比如a=4, b=9, c=79时43+93=793。
输入两个整数x, y, 求满足x<=a,b,c<=y的整数解的个数。
输入最多包含10组数据。每组数据包含两个整数x, y(1<=x,y<=108)。
对于每组数据,输出解的个数。
1 101 20123 456789
Case 1: 0Case 2: 2Case 3: 16
思路:优化暴力。利用c=a+b,压缩范围。
代码:
#include<cstdio> #include<cstring> #include<algorithm> #include<string> #include<map> #include<iostream> using namespace std; typedef long long LL; int main() { int m,n,p=1; while(~scanf("%d%d",&n,&m)) { int sum=0; for(int i=n;(i<=m)&&i<=1000;i++) { int x=i*i*i; for(int j=n;(j<=m)&&j<=1000;j++) { int y=j*j*j; int w=x+y; if(w%10==3&&(w/10)>=n&&(w/10)<=m) sum++; } } printf("Case %d: %d\n",p++,sum); } }