posts - 137,comments - 0,views - 40818

给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。

使用双指针:

复制代码
#include <iostream>
#include <math.h>
using namespace std;
bool judge(long c) {
  if (c < 0) return false;
  long a = 0;
  long b = (int)sqrt(c);
  long sum = 0;
  while (a <= b) {
    sum = a * a + b * b;
    if (sum == c) {
      return true;
    }
    if (sum < c) {
      ++a;
    }
    else {
      --b;
    }
  }
  return false;
}
int main(void) {
  int c = 0;
  cout << "请输入一个非负整数:";
  cin >> c;
  if (judge(c)) {
    cout << "存在两个整数 a 和 b,使得 a2 + b2 = c !\n";
  }
  else {
    cout << "不存在两个整数 a 和 b,使得 a2 + b2 = c !\n";
  }

  return 0;
}
复制代码
posted on   wshidaboss  阅读(144)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
历史上的今天:
2023-02-03 C/C++ 数据结构循环队列的实现
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示