两个数的平方和

来源:互联网 发布:linux文件夹命名规则 编辑:程序博客网 时间:2024/05/18 02:50
给出一个整数N,将N表示为2个整数i j的平方和(i <= j),如果有多种表示,按照i的递增序输出。

例如:N = 130,130 = 3^2 + 11^2 = 7^2 + 9^2 (注:3 11同11 3算1种)

#include <iostream>#include <math.h>using namespace std;int input[40000];int main(){    int N;    cin >> N;    int maxVal = sqrt(N);    for (int i = 0; i <= maxVal; i++)    {        input[i] = i*i;    }        int left = 0;    int right = maxVal;    bool found = false;    while (left <= right)    {        int temp = input[left] + input[right];        if (temp == N)        {            cout << left << " " << right << endl;            found = true;            left++;        }        else if (temp > N)        {            right--;        }        else        {            left++;        }    }        if (!found)    {        cout << "No Solution" << endl;    }    return 0;}


0 0
原创粉丝点击