四平方和-藍橋杯

四平方和ios

四平方和定理,又稱爲拉格朗日定理: 每一個正整數均可以表示爲至多 4 個正整數的平方和。 若是把 0 包括進去,就正好能夠表示爲 4 個數的平方和。函數

好比: 5 = 0^2 + 0^2 + 1^2 + 2^2 7 = 1^2 + 1^2 + 1^2 + 2^2 (^符號表示乘方的意思) 對於一個給定的正整數,可能存在多種平方和的表示法。spa

要求你對 4 個數排序: 0 <= a <= b <= c <= d 並對全部的可能表示法按 a,b,c,d 爲聯合主鍵升序排列,最後輸出第一個表示法
程序輸入爲一個正整數 N (N<5000000) 要求輸出 4 個非負整數,按從小到大排序,中間用空格分開 例如,操作系統

輸入: 調試

5 code

則程序應該輸出: blog

0 0 1 2 排序

再例如,輸入: 內存

12 ci

則程序應該輸出:

0 2 2 2

再例如,輸入:

773535 則程序應該輸出:

1 1 267 838

峯值內存消耗 < 256M CPU 消耗 < 3000ms 請嚴格按要求輸出,不要多此一舉地打印相似:「請您輸入...」 的多餘內容。 全部代碼放在同一個源文件中,調試經過後,拷貝提交該源碼。

注意: main 函數須要返回 0 注意: 只使用 ANSI C/ANSI C++ 標準,不要調用依賴於編譯環境或操做系統的特殊函數。

注意: 全部依賴的函數必須明確地在源文件中 #include <xxx>, 不能經過工程設置而省 略經常使用頭文件。 提交時,注意選擇所指望的編譯器類型。

 

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    int n,x;
    cin>>n;
    x=sqrt(n)+1;
    for(int i=0;i<x;i++)
        for(int j=0;j<x;j++)
            for(int k=0;k<x;k++)
                for(int t=0;t<x;t++)
                {
                    if(i*i+j*j+k*k+t*t==n)
                    {
                        cout<<i<<' '<<j<<' '<<k<<' '<<t<<endl;
                        i=x;
                        j=x;
                        k=x;
                        break;
                    }
                }
                return 0;

}
相關文章
相關標籤/搜索