鱼C论坛

 找回密码
 立即注册
查看: 660|回复: 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
  1. #include <stdio.h>
  2. #include <math.h>

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

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

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

  22.         if (!found) {
  23.             printf("Not found!\n");
  24.         }
  25.     }

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

使用道具 举报

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

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

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

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

  22.         if (!found) {
  23.             printf("Not found!\n");
  24.         }
  25.     }

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

使用道具 举报

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

下面是一个简单的实现代码:
  1. #include <stdio.h>
  2. #include <math.h>
  3. int isPerfectSquare(int num) {
  4.     int squareRoot = sqrt(num);
  5.     return squareRoot * squareRoot == num;
  6. }
  7. int main() {
  8.     int A, B;
  9.    
  10.     while (scanf("%d %d", &A, &B) != EOF) {
  11.         int N = 1; // 假设N的最小值为1
  12.         
  13.         while (1) {
  14.             if (isPerfectSquare(N + A) && isPerfectSquare(N + B)) {
  15.                 printf("%d\n", N);
  16.                 break;
  17.             }
  18.             
  19.             N++;
  20.             
  21.             // 如果N的值已经超过了1000000,则说明没有找到满足条件的N
  22.             if (N > 1000000) {
  23.                 printf("Not found!\n");
  24.                 break;
  25.             }
  26.         }
  27.     }
  28.    
  29.     return 0;
  30. }
复制代码

这个代码中,首先定义了一个 `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-5-23 20:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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