平方朋友对C++

给定一个正整数 n,我们规定如果两个正整数 A和 B 满足,对于任意 0≤i<n,都可以通过在 A+i后面添加 3 位数字(具体添加什么可以自由选择)的方式得到 (B+i)2,则称 (A,B) 是平方朋友对。
例如,当 n=3 时,如果 A=73,B=272,则 (A,B) 平方朋友对,因73984=272^2 ,
74529=273^2,
75076=274^2
下划线部分即为添加的 3位数字)。
现在,给定两个正整数 n,MaxA,请你找到并输出所有满足 A≤MaxA 且 (A,B)是平方朋友对的 A,B。

输入格式
共一行,包含两个正整数 n,MaxA。

输出格式
如果不存在满足条件的 A,B,则输出 No Solution.否则,每行输出一对满足条件的 A,B,输出时优先输出 A 更小的数对,A相同时,优先输出 B更小的数对。

数据范围
1≤n≤100,
1≤MaxA≤10^6。

输入样例1:
3 85

输出样例1:
73 272
78 281
82 288
85 293

输入样例2:
4 100

输出样例2:
No Solution.

#include<iostream>
#include<math.h>
using namespace std;
int a,b;
int f(int b)
{
    return (b*b)/1000;
}
int main()
{
    int n,maxa,cnt=0;
    cin>>n>>maxa;
    for(b=32;b<=sqrt((maxa+n-1)*1000+999);b++)
    {
        a=f(b);
        int flag=1;
        for(int i=1;i<n;i++)
        {
            if((a+i)!=f(b+i))
            {
                flag=0;
                break;
            }
        }
        if(flag)
        {
            cnt++;
            cout<<a<<" "<<b<<endl;
        }
    }
    if(!cnt) cout<<"No Solution.";
    return 0;
}
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值