1. 程式人生 > >第四平方和定理問題

第四平方和定理問題

第四平方和定理,又稱為拉格朗日定理:每個正整數都可以表示為至多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(^符號表示乘方的意思)對於一個