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

搞笑版费马大定理 (湖南省第九届大学生计算机程序设计竞赛)

时间:2014-10-11 20:42:26      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:acm   算法   



1337: 搞笑版费马大定理

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 402  Solved: 193
[Submit][Status][Web Board]

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

HINT

其实是一道水题,开始也想了很久没什么思路,感觉就那么做会超时,没有明白题目的深一层的含义, 其实给我们的数据范围就是一个突破口;
虽然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 <cstdio>
#include <cstring>
using namespace std;
int main()
{
    int x,y,a,b,c,count,k=0;
    while(scanf("%d%d",&x,&y)!=EOF)
    {
        count=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) count++;
         }
          printf("Case %d: %d\n", ++k, count);
    }
    return 0;
}
别人0ms的代码;
#include<stdio.h>
 
 
int main()
{
    //freopen("a.txt","r",stdin);
    long long x,y,i,j,t;
    int a=0;
    while(scanf("%lld%lld",&x,&y)!=EOF)
    {
        t=x*x*x;
        a++;
        y=y*10+3;
        int cnt=0;
        for(i=x,j=1;t+i*i*i<=y;i++,j++);
        long long ii=i,jj=j;
        //printf("%lld %lld\n",i,j);
        for(i=x;i<=ii;i++)
        {
            int k=(13-i*i*i%10)%10;
            if(k!=0 && k!=1 && k!=4 && k!=5 && k!=6 && k!=9) k=10-k;
            for(j=x-x%10+k;j<ii;j+=10)
            {
                if(j<x) j+=10;
                if(j*j*j+i*i*i<=y)   cnt++; //printf("%lld %lld\n",i,j);
            }
        }
        printf("Case %d: %d\n",a,cnt);
    }
    return 0;
}



1337: 搞笑版费马大定理

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 402  Solved: 193
[Submit][Status][Web Board]

Description

费马大定理:当n>2时,不定方程an+bn=cn没有正整数解。比如a3+b3=c3没有正整数解。为了活跃气氛,我们不妨来个搞笑版:把方程改成a3+b3=c3,这样就有解了,比如a=4, b=9, c=7943+93=793

输入两个整数x, y, 求满足x<=a,b,c<=y的整数解的个数。

Input

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

Output

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

Sample Input

1 10
1 20
123 456789

Sample Output

Case 1: 0
Case 2: 2
Case 3: 16

HINT

搞笑版费马大定理 (湖南省第九届大学生计算机程序设计竞赛)

标签:acm   算法   

原文地址:http://blog.csdn.net/whjkm/article/details/39996557

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