鱼C论坛

 找回密码
 立即注册
查看: 1037|回复: 3

[已解决]这题怎么解决

[复制链接]
发表于 2023-12-3 15:28:35 | 显示全部楼层 |阅读模式
10鱼币
任务描述
一个整数N,它加上A后是一个完全平方数,它加上B又是一个完全平方数,请问该数是多少?
输入格式:
有若干组A和B的数据,每组数据占一行,数之间以空格分隔。
输出格式:
对于每组数据,在区间[1,10000]内输出满足条件的最小的N,如果没有则输出Not found!。
每个输出占一行。
输入样例:
2 7
20 41
100 101
100 268
输出样例:
2
80
Not found!
21
用C语言和数组写,越简单越好,谢谢
最佳答案
2023-12-3 15:28:36
#include <stdio.h>
#include <math.h>

// 检查一个数是否是完全平方数
int isPerfectSquare(int num) {
    int root = (int)sqrt(num);
    return root * root == num;
}

int main() {
    int A, B;
    
    // 读取输入直到遇到文件结束符
    while (scanf("%d %d", &A, &B) != EOF) {
        int found = 0;

        // 检查每一个可能的N值
        for (int N = 1; N <= 10000; ++N) {
            if (isPerfectSquare(N + A) && isPerfectSquare(N + B)) {
                printf("%d\n", N);
                found = 1;
                break;
            }
        }

        if (!found) {
            printf("Not found!\n");
        }
    }

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-3 15:28:36 | 显示全部楼层    本楼为最佳答案   
#include <stdio.h>
#include <math.h>

// 检查一个数是否是完全平方数
int isPerfectSquare(int num) {
    int root = (int)sqrt(num);
    return root * root == num;
}

int main() {
    int A, B;
    
    // 读取输入直到遇到文件结束符
    while (scanf("%d %d", &A, &B) != EOF) {
        int found = 0;

        // 检查每一个可能的N值
        for (int N = 1; N <= 10000; ++N) {
            if (isPerfectSquare(N + A) && isPerfectSquare(N + B)) {
                printf("%d\n", N);
                found = 1;
                break;
            }
        }

        if (!found) {
            printf("Not found!\n");
        }
    }

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-3 15:32:01 | 显示全部楼层
在C语言中,可以使用循环遍历的方式来解决这个问题。首先,需要导入math.h头文件,以便使用 sqrt 函数来计算完全平方数。然后,可以定义一个函数来判断给定的数是否是完全平方数。

下面是一个简单的实现代码:
#include <stdio.h>#include <math.h>int isPerfectSquare(int num) {    int squareRoot = sqrt(num);    return squareRoot * squareRoot == num;}int main() {    int A, B;        while (scanf("%d %d", &A, &B) != EOF) {        int N = 1; // 假设N的最小值为1                while (1) {            if (isPerfectSquare(N + A) && isPerfectSquare(N + B)) {                printf("%d\n", N);                break;            }                        N++;                        // 如果N的值已经超过了1000000,则说明没有找到满足条件的N            if (N > 1000000) {                printf("Not found!\n");                break;            }        }    }        return 0;}
这个代码中,首先定义了一个 `isPerfectSquare` 函数,用于判断给定的数是否是完全平方数。然后,在主函数中,使用循环读取用户输入的 A 和 B 的值,并通过循环逐步增加 N 的值,检查每个 N 是否满足要求。如果找到满足条件的 N,则输出结果并跳出循环;如果没有找到,则输出 "Not found!"。

请注意,上述代码中的循环次数限定为1000000次,如果题目中给定的 A 和 B 的值较大,可能需要进行调整。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-12-3 21:20:47 | 显示全部楼层

int isPerfectSquare(int num) {
    int root = (int)sqrt(num);
    return root * root == num;
}
这个可以再讲讲吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 08:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表