四平方和
四平方和定理,又稱為拉格朗日定理:
每個正整數都可以表示為至多4個正整數的平方和。
如果把0包括進去,就正好可以表示為4個數的平方和。
比如:5 = 0^2 + 0^2 + 1^2 + 2^2
7 = 1^2 + 1^2 + 1^2 + 2^2
(^符號表示乘方的意思)
對於乙個給定的正整數,可能存在多種平方和的表示法。
要求你對4個數排序:
0 <= a <= b <= c <= d
並對所有的可能表示法按 a,b,c,d 為聯合主鍵公升序排列,最後輸出第乙個表示法
程式輸入為乙個正整數n (n<5000000)
要求輸出4個非負整數,按從小到大排序,中間用空格分開
例如,輸入:
5則程式應該輸出:
0 0 1 2
再例如,輸入:
12則程式應該輸出:
0 2 2 2
再例如,輸入:
773535
則程式應該輸出:
1 1 267 838
其實這道題作為第八題來講,難度十分小,四個數,只需要四個迴圈就可以解決,覺得考點應該在時間複雜度的降低,先把**說下。
#include
#include
#include
intmain()
}}}}
}
第一層迴圈控制第乙個數字,第二層迴圈控制第二個數,以此類推,注意迴圈初始值設定應該是j=i,k=j,1=k,題中要求必須是從小到大排列,比如5=0x0+0x0+1x1+2x2,需要四個數,因為是從最外層開始迴圈,最外層必然會佔據最小的乙個數,可以利用這乙個性質,來簡化演算法,比如當第乙個數確定是100(四個數中最小的那個數)第二個數完全可以從100開始迴圈,而且如果不這麼寫,時間複雜度比較長,不滿足體中要求。
改進前:
改進後:
藍橋杯 四平方和問題
四平方和定理,又稱為拉格朗日定理 每個正整數都可以表示為至多4個正整數的平方和。如果把0包括進去,就正好可以表示為4個數的平方和。比如 5 0 2 0 2 1 2 2 2 7 1 2 1 2 1 2 2 2 對於乙個給定的正整數,可能存在多種平方和的表示法。要求你對4個數排序 0 a b c d 並...
藍橋杯 四平方和
四平方和 四平方和定理,又稱為拉格朗日定理 每個正整數都可以表示為至多4個正整數的平方和。如果把0包括進去,就正好可以表示為4個數的平方和。比如 5 0 2 0 2 1 2 2 2 7 1 2 1 2 1 2 2 2 符號表示乘方的意思 對於乙個給定的正整數,可能存在多種平方和的表示法。要求你對4個...
藍橋杯 四平方和
四平方和 四平方和定理,又稱為拉格朗日定理 每個正整數都可以表示為至多4個正整數的平方和。如果把0包括進去,就正好可以表示為4個數的平方和。比如 5 0 2 0 2 1 2 2 2 7 1 2 1 2 1 2 2 2 符號表示乘方的意思 對於乙個給定的正整數,可能存在多種平方和的表示法。要求你對4個...