题海拾贝:由两个平方三位数获得三个平方二位数

  Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!

91bfeb2bb1414a2ebf09cbc4f9706779.gif

我的博客:<但凡.

我的专栏:《编程之路》《数据结构与算法之美》《题海拾贝》

欢迎点赞,关注!

1、题目

由二个平方三位数获得三个平方二位数。已知两个平方三位数abc和xyz,其中a、b、c、x、y、z未必是不同的;而ax、by、cz是三个平方二位数。请编程求三位数abc和xyz。

**输出格式要求:"%d and %d\n" 
**输出提示信息:"The possible perfect squares combinations are:\n"

程序运行示例如下:
The possible perfect squares combinations are:
400 and 900
841 and 196

2、题解

        由两个获得平方数三个两位平方数。我们可以写个循环,存储这个三位数的每一位。然后就是找这三个两位数了。然后使用穷举法,按题里的ax,by,cz这样组合判断这三个数是否满足平方数。

#include<stdio.h>
#include<math.h>
void test(int a[3],int n)
{
    int i = 2;//这样可以把百位存在a[0]
    while (n)
    {
        a[i--] = n % 10;
        n /= 10;
    }
}
int main()
{
    int a[3] = { 0 };//存储第一个三位数的各个位
    int b[3] = { 0 };//存储第二个三位数的各个位
    int i = 0;
    int j = 0;
    printf("The possible perfect squares combinations are:\n");
    for (i = 10;i < 31;i++)
    {
        for(j=10;j< 31;j++)//这样保证咱们的三位数是平方数
        {
            test(a, i*i);
            test(b, j*j);
            if ((sqrt(a[0] * 10 + b[0]) == (int)sqrt(a[0] * 10 + b[0])) &&
                (sqrt(a[1] * 10 + b[1]) == (int)sqrt(a[1] * 10 + b[1])) &&
                (sqrt(a[2] * 10 + b[2]) == (int)sqrt(a[2] * 10 + b[2])))//如果不是平方数,那他开平方是小数
            {
                printf("%d and %d\n", i*i, j*j);//注意咱们这不break,因为这个数不一定只有一个,咱们不知道有几个
            }
        }
    }
    return 0;
}

        好了,今天的内容就分享到这,我们下期再见!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值