第四平方和定理問題
第四平方和定理,又稱為拉格朗日定理:每個正整數都可以表示為至多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個非負整數,按從小到大排序,中間用空格分開
【輸入範例 1】5
【輸出範例 1】0 0 1 2
【輸入範例 2】773535
【輸出範例 2】1 1 267 838
程式程式碼:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int N,a,b,c,d; //N表示輸入的數,a,b,c,d分別為對應所找的數
scanf("%d",&N); //輸入N
for(a=0;a<=pow(N,1.0/8);a++) //縮小a的範圍,減少迴圈的次數,a從0開始,以逐次加一來迴圈
{
for(b=a;b<=pow(N,1.0/4);b++) //縮小b的範圍,減少迴圈的次數,b>=a,b從a開始,以逐次加一來迴圈
{ //因為a,b較小,所以a,b從最小的數開始進行篩選
for(c=(int)(2*sqrt(N)-1);c>=b;c--) //縮小c的範圍,減少迴圈的次數,c>=b,因為c比較大,所以從最大的值開始逐步遞減來篩選
{
for(d=(int)sqrt(N);d>=c;d--) //縮小d的範圍,減少迴圈的次數,d>=c,因為d比較大,所以從最大的值開始逐步遞減來篩選
{
if(a*a+b*b+c*c+d*d-N==0) //判斷是否與輸入的值相等
{
printf("%d %d %d%d\n",a,b,c,d); //輸出
exit(0); //輸出第一個後退出程式
}
}
}
}
}
return 0;
}
相關推薦
第四平方和定理,用c語言實現
1.實驗題目1.7【問題描述】第四平方和定理,又稱為拉格朗日定理:每個正整數都可以表示為至多4個正整數的平方和。 如果把0包括進去,就正好可以表示為4個數的平方和。比如:5 = 0^2 + 0^2 + 1^2 + 2^2 7 = 1^2 + 1^2 + 1^2 + 2^2
第四平方和定理問題
第四平方和定理,又稱為拉格朗日定理:每個正整數都可以表示為至多4個正整數的平方和。如果把 0包括進去,就正好可以表示為4個數的平方和。比如:5=0^2+0^2+1^2+2^2 7=1^2+1^2+1^2+2^2(^符號表示乘方的意思) 對於一個給定的正整數,可能存在多種平方
拉格朗日定理(第四平方和定理)
#include <stdio.h> #include <math.h> int main() { int a, b, c, n, flag = 0; double maxN, d; printf("輸入一個正整數為:");
四平方和定理
sco width spl sam tle load evel llb tput 四平方和定理 維基百科地址:https://zh.wikipedia.org/wiki/%E5%9B%9B%E5%B9%B3%E6%96%B9%E5%92%8C%E5%AE%9A%E7%
四元數/四平方和定理
四平方和定理:任意正整數n可表示成4個平方數之和。 後來又有了四元數,兩個四元數的積的模,等於模的積: 在Mathematica裡面這樣證明: In[1]:= << Quaternions` In[2]:= Quaternion[a1,a2,a3,
[數學 拉格朗日四平方和定理 Rho大整數分解] BZOJ 2904 平方和
PS linux下RAND_MAX是2^31!!TLE了快一頁 另一題4522跟著一起T #include<cstdio> #include<cstdlib> #include<ctime> #include<algorit
四平方和定理_簡化迴圈
. 四平方和定理,又稱為拉格朗日定理:每個正整數都可以表示為至多四個正整數的平方和。如果把 00 包括進去,就正好可以表示為四個數的平方和。 比如: \displaystyl
列舉-四平方和定理
#include<stdio.h> #include<math.h> int main(){ int n; //printf("%f",sqrt(5000000)); scanf("%d",&n); int a,b,c,d; for(a=0;a<=2237;a
CSU 1404: Four-square Theorem(拉格朗日四平方和定理)
題目:DescriptionLagrange’s four-square theorem states that any natural number can be represented as the
第四章 微分中值定理及導數的應用
一、羅爾定理1、幾何意義2、證明,閉區間可取得極值,最大值點處導數存在,左導數等於右導數,證明該點出導數只能等於零 二、拉格朗日定理1、幾何意義2、證明,作原函式與平行於曲線弦的一條直線的差,其端點值相等,則根據羅爾定理可證明3、拉格朗日定理的其他形式4、拉格朗日定理是羅爾定理的擴充套件5、任意點處的拉格朗
牛客網暑期ACM多校訓練營(第四場)A.Ternary String(擴充套件尤拉定理)
題意 每秒鐘2後面加一個1,1後面加1個0,然後刪除第一個字元,問需要多少秒才能刪完 題解 可以發現:0會使答案加1,1會使答案T*2+2,2會使答案T變成(2^(T+1)-1)*3,所以一邊計算即可,但是由於要取模,所以需要擴充套件尤拉定理,證明轉載自http://blog.csdn.
演算法導論 第四章:遞迴式 筆記(代換法、遞迴樹方法、主方法、主定理的證明)
三種解遞迴式的方法:代換法、遞迴樹方法、主方法。 代換法: 用代換法解遞迴式需要兩個步驟: 猜測解的形式; 用數學歸納法找出使解真正有效的常數。 如: T(n) = 2T(n/2) + n,這個是合併排序的執行時間的遞迴表示式。歸併排序法的執行時間是O(nlgn),那麼我
第七屆藍橋杯第8題:四平方和
四平方和 四平方和定理,又稱為拉格朗日定理: 每個正整數都可以表示為至多4個正整數的平方和。 如果把0包括進去,就正好可以表示為4個數的平方和。 比如: 5 = 0^2 + 0^2 + 1^2 + 2^2 7 = 1^2 + 1^2 + 1^2 + 2^2 (^符號表示乘方
藍橋杯 第七屆省賽試題 四平方和
四平方和定理,又稱為拉格朗日定理: 每個正整數都可以表示為至多4個正整數的平方和。 如果把0包括進去,就正好可以表示為4個數的平方和。 比如: 5 = 0^2 + 0^2 + 1^2 + 2^2 7
2016年第七屆藍橋杯C/C++程式設計本科B組省賽 四平方和(程式設計大題)
2016年第七屆藍橋杯C/C++程式設計本科B組省賽題目彙總: 四平方和 四平方和定理,又稱為拉格朗日定理: 每個正整數都可以表示為至多4個正整數的平方和。 如果把0包括進去,就正好可以表示為
第七屆藍橋杯四平方和
此題直接迴圈,但沒必要四重迴圈 #include<stdio.h> #include<math.h> int main() { int n,a,b,c,d; s
第七屆藍橋杯JAVA B組省賽-四平方和試題
四平方和 四平方和定理,又稱為拉格朗日定理: 每個正整數都可以表示為至多4個正整數的平方和。 如果把0包括進去,就正好可以表示為4個數的平方和。 比如: 5 = 0^2 + 0^2 + 1^2 + 2^2 7 = 1^2 + 1^2 + 1^2 +
第七屆藍橋杯C++B組 四平方和
四平方和四平方和定理,又稱為拉格朗日定理:每個正整數都可以表示為至多4個正整數的平方和。如果把0包括進去,就正好可以表示為4個數的平方和。比如:5 = 0^2 + 0^2 + 1^2 + 2^27 = 1^2 + 1^2 + 1^2 + 2^2(^符號表示乘方的意思)對於一個
2016年藍橋杯省賽C/C++ A組 第八題 四平方和
四平方和定理,又稱為拉格朗日定理: 每個正整數都可以表示為至多4個正整數的平方和。 如果把0包括進去,就正好可以表示為4個數的平方和。 比如: 5 = 0^2 + 0^2 + 1^2 + 2^2 7 = 1^2 + 1^2 + 1^2 + 2^2 (^符號表示乘方的
第七屆藍橋杯JavaB組-四平方和
四平方和四平方和定理,又稱為拉格朗日定理:每個正整數都可以表示為至多4個正整數的平方和。如果把0包括進去,就正好可以表示為4個數的平方和。比如:5 = 0^2 + 0^2 + 1^2 + 2^27 = 1^2 + 1^2 + 1^2 + 2^2(^符號表示乘方的意思)對於一個