ZCMU-1670-和费马开个玩笑(数据范围)

探讨通过限定范围暴力搜索解决费马玩笑问题的方法,即寻找特定范围内满足a³ + b³ = c³形式的整数解数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1670: 和费马开个玩笑

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 43   Solved: 30
[ 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


【解析】
此题跟我开了个大大的玩笑,一开始第一时间想到的就是暴搜,但是一想肯定会超时...没想到还是暴搜..不过这个暴搜是有范围的哦,首先我们要注意到c的取值范围是小于等于10的8次方的,也就是说c乘10一定是小于等于10的9次方的,那么我们的a和b最大的上限肯定是10的三次方也就是1000所以我们就可以开始敲了...数据范围也是一个突破点..
#include<iostream>
#include<string>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
    long long n,m,k;
    int count,p=0,i,j;
    while(~scanf("%lld%lld",&n,&m))
    {
        count=0;
        p++;
        for(i=n;i<=1000&&i<=m;i++)
        {
            for(j=n;j<=1000&&j<=m;j++)
            {
                k=i*i*i+j*j*j;
                if(k%10!=3)
                    continue;
                else
                    k=k/10;
                if(k>=n&&k<=m)
                    count++;
            }
        }
        printf("Case %d: %d\n",p,count);
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值