- 问题描述:Given a non-negative integer c, your task is to decide whether there’re two integers a and b such that a2 + b2 = c.
- 思路类似于 leet_167_Two_Sum 有序数组求和(使用双指针)。
- c++实现代码:
#include<iostream>
using namespace std;
#include<vector>
#include<cmath>
class Solution
{
private:
int num;
public:
Solution(int num_data) :num(num_data){}
vector<int> sum_square()
{
vector<int> res;
int sqrt_num = ceil(sqrt(this->num));
int start = 1;
int end = sqrt_num;
while (start < end)
{
if (pow(start, 2) + pow(end, 2) < this->num)
++start;
else if (pow(start, 2) + pow(end, 2) > this->num)
--end;
else
{
res.push_back(start);
res.push_back(end);
return res;
}
}
return res;
}
};
int main(int argc, char* argv[])
{
Solution instance(42);
if (instance.sum_square().size() == 0)
cout << "the number is not two digtal square\'s sum" << endl;
else
cout << "the number is " << instance.sum_square()[0] << " and " << instance.sum_square()[1] << "\'s square num." << endl;
system("pause");
}