• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 70  文章 - 160  trackbacks - 0

            公告:
            知識共享許可協議
            本博客采用知識共享署名 2.5 中國大陸許可協議進行許可。本博客版權歸作者所有,歡迎轉載,但未經作者同意不得隨機刪除文章任何內容,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 具體操作方式可參考此處。如您有任何疑問或者授權方面的協商,請給我留言。

            常用鏈接

            留言簿(8)

            隨筆檔案

            文章檔案

            搜索

            •  

            積分與排名

            • 積分 - 179004
            • 排名 - 147

            最新評論

            閱讀排行榜

            評論排行榜

            話說已經三個月沒碰過算法了,真的很無奈,恐怕學到的一點知識全忘光了。
            昨天,蘿莉神給我一道題目:

            TitleRoowe(沒見過這么BT的,拿自己名字去編題目)很喜歡研究數學,現在他就遇到一個有趣的問題,比如,直角三角形的周長是120的話,那么它的三條邊可以是20,48,52,或者24,45,51,還有30,40, 50,有三種不同的解,現在他想知道一個區間[a,b]中哪個數的解數最多(1<= a, b <= 1000000)?
            輸入:
            10 100
            1000 100000
            1 1000000
            300000 700000
            100000 300000
            100000 700000
            800000 900000
            104 720720
            80 360360
            1 1000000
            輸出:
            60 2
            55440 40
            720720 104
            360360 80
            240240 64
            360360 80
            831600 78
            720720 104
            360360 80
            720720 104

            讓我做下,本來懶得做的,但是他說打表就OK了,于是我就欣然答應了。。。奈何他眼中的打表難易度和我眼中不一樣,再次看到了數學系高材生和我的差距,嘿嘿。

                 第一次嘗試,失敗。
                我說,不就是勾股定理a^2+b^2=c^2嗎?結果他說,你再去補補數學知識。。。。
                于是給了我一個鏈接,我一看,不就是百度百科的勾股數嗎,于是就暫時擱淺了。
                今晚第二次嘗試,仍然失敗。
                依稀記得昨天他給我說了有個什么勾股數公式,在百度百科那個勾股數的最下面介紹了,但是我看了半天,還是有點迷糊。
                然后讓他把代碼給我看看,好吧,結合百科介紹的勾股數公式,茅塞頓開。

               這里給出勾股數公式
               直角三角形三條邊a, b, c,其中a,b是直角邊。
               則 a=2*m*n   

                     b=m^2-n^2   

                     c=m^2+n^2

            當然,這是有前提條件的,也就是其局限性:“勾股數的公式還是有局限的。勾股數公式可以得到所有的基本勾股數,但是不可能得到所有的派生勾股數。比如6,8,10;9,12,15…,就不能全部有公式計算出來”

            也就是說,3,4,5可以求出來,但是其倍數6,8,10就不行了。

            這里要注意幾個問題:

            1.構成三角形的條件:

                 2*m*n+m^2-n^2 > m^2+n^2

                 既m>n

            2.a, b, c互質,即無法得到派生的勾股數。

            以下是代碼:

            // Tanky Woo
            // www.WuTianQi.com
            #include <iostream>
            #define M 1000000
            int arr[M+1];
            using namespace std;
             
            int gcd(int a, int b)
            {
                
            if(b==0)    
                    
            return a;
                
            else     
                    
            return gcd(b, a%b);
            }
             
            void init()
            {
                
            for(int i=1; i<=800++i)
                    
            for(int j=i+12*j*j+2*j*i<=M; ++j)
                    {
                            
            int x, y, z;
                            x
            =2*i*j;
                            y
            =j*j-i*i;
                            z
            =j*j+i*i;
                            
            //確保x,y,z互質 
                            if(gcd(gcd(x, y), z) == 1)
                            {
                                
            int t = x+y+z;
                                
            int tmp = 1;
                                
            while(tmp*<= M)
                                {
                                    arr[tmp
            *t]++;
                                    
            ++tmp;
                                }
                            }
                    }
            }
             
            int main()
            {
                
            //freopen("input.txt","r",stdin);
                
            //freopen("output.txt","w",stdout);
                init();
                
            int n, m;
                
            while(scanf("%d%d",&n,&m) != EOF){
                    
            int pos = 0;
                    
            int Max = 0;
                    
            for(int i=n; i<=m; i++){
                        
            if(arr[i] > Max){
                            Max 
            = arr[i];
                            pos 
            = i;
                        }
                    }
                    printf(
            "%d %d\n",pos, Max);
                }
                
            return 0;
            }

            Tanky Woo原創,轉載請注明: 轉載自Tanky Woo
            文章標題: 勾股數公式
            本文鏈接地址: http://www.wutianqi.com/?p=1632
            posted on 2010-12-03 11:19 Tanky Woo 閱讀(5964) 評論(2)  編輯 收藏 引用

            FeedBack:
            # re: 勾股數公式 2010-12-03 11:32 陳梓瀚(vczh)
            求所有因數,然后得到所有勾股數?  回復  更多評論
              
            # re: 勾股數公式 2012-11-26 08:56 
            因為缺少信息分析,雖然在最初的時間段里面自己對于業績的感覺好像沒有多大關系,但是伴隨時間的推移,這樣對于業績的感覺遞減的前提下面,逐漸會失去自己對于業績判斷的逐步增長的能力,而失去對于信息分析下面關于業績分析的穩定增長的感覺。  回復  更多評論
              
            国内精品伊人久久久久影院对白| 欧美一级久久久久久久大片| 午夜精品久久久久成人| 久久精品国产亚洲网站| 久久亚洲私人国产精品vA| 国产69精品久久久久APP下载| 久久久久久国产a免费观看不卡| 久久香蕉一级毛片| 久久精品国产影库免费看| 69久久精品无码一区二区| 久久精品国产99久久久| 国产精品免费看久久久| 无码人妻久久一区二区三区免费| 久久国产AVJUST麻豆| 久久久久久久久久久久久久| 国内精品伊人久久久影院| 久久天天躁狠狠躁夜夜不卡| 伊人热热久久原色播放www| 人妻少妇精品久久| 欧美亚洲国产精品久久久久| 久久精品中文无码资源站| 久久夜色精品国产欧美乱| 国产亚洲精品自在久久| 九九久久99综合一区二区| 国产精品久久久久久久午夜片| 久久高潮一级毛片免费| 欧洲国产伦久久久久久久| 免费无码国产欧美久久18| 久久久无码一区二区三区| 91精品国产综合久久香蕉 | 精品综合久久久久久97| 亚洲综合熟女久久久30p| 99麻豆久久久国产精品免费| 国产亚洲美女精品久久久| 久久久无码精品午夜| 香蕉久久夜色精品升级完成| 国产精品久久精品| 欧美日韩中文字幕久久久不卡| 精品多毛少妇人妻AV免费久久| 久久国产精品99国产精| 青青草原综合久久大伊人导航|