四平方和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; }