码迷,mamicode.com
首页 > 其他好文 > 详细

CSU 1337(费马大定理)

时间:2015-07-17 21:00:49      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

 

                                    CSU 1337

Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu
 

Description

费马大定理:当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的整数解的个数。

 

Input

输入最多包含10组数据。每组数据包含两个整数x, y(1<=x,y<=108)。

 

Output

对于每组数据,输出解的个数。

 

Sample Input

1 10
1 20
123 456789 

Sample Output

Case 1: 0
Case 2: 2
Case 3: 16 
 
题解:看了其他人的解题,发现其实是一道很好想的题,一开始没有明白题目的深一层的含义
其实虽然x和y的范围都是10^8,但是如果a 是大于1000的话,那么a^3就会大于10^9,这样等号的右边只有一个10 * c + 3,这个最大只能达到10^9数量级,所以,不管输入的x跟y是多少,我们只要取其中的在1到1000的区间就可以了,枚举a和b,那么c就可以得到,然后判断c的范围是不是在x到y之间,这样时间复杂度就降到了10^6,直接暴力,两个循环就搞定了



#include<iostream> using namespace std; int main() { int a,b,c,x,y,m=0,n; while(cin>>x>>y&&x&&y) { n=0; for(a=x;a<=1000&&a<=y;a++) for(b=x;b<=1000&&b<=y;b++) { int s=a*a*a+b*b*b; if(s%10!=3)continue; c=s/10; if(c>=x&&c<=y) n++; }++m; cout<<"Case "<<m<<": "<<n<<endl; } return 0; }

CSU 1337(费马大定理)

标签:

原文地址:http://www.cnblogs.com/hfc-xx/p/4655514.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!