• <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>

            poj 1730 Perfect Pth Powers

               通過這道題確實體會到A掉數(shù)學題確實還是需要經(jīng)驗了,不能猜對哪個地方會喪失精度的話,會一直wa的。其實,這道題我只想出了一半。
            題意是 a的p次方 = n,其中n是32位整數(shù),a和p都是整數(shù),求滿足條件的最大p。好吧,雖然我是在學數(shù)論,但是看到這題,我還是想起了
            取對數(shù)。那么可以得到,p = ln(n) / ln(a)。既然要求最大的p,那么a最小即可了。那么直接從2開始枚舉a不就可以了么。
                可是直接枚舉a的話肯定會超時的,因為a的范圍太大了,比如n的是個大素數(shù),a的范圍就是2-n了,一定超時了。然后,我又想出另外一
            種方法,對n分解因子,p就是所有因子的指數(shù)的最大公約數(shù)。呵呵,第二種方法更加會無情的超時,由于int范圍很大,實現(xiàn)搞個素數(shù)表也不
            可能。還是感覺時間不多了,就不多想了,然后搜了下,發(fā)現(xiàn)一句話,意識是枚舉p。頓時覺得開朗起來,因為p最多是32。由前面可以得到
            ln(a) = ln(n) / p。那么只要從32到1枚舉p,保證a是整數(shù)即可。
               后面發(fā)現(xiàn)這樣精度難于控制,各種原因反正過不了題,看網(wǎng)上的代碼,改成計算指數(shù)的形式了。因為 a = n的(1/p)次,這個可以用pow函
            數(shù)算出來,如果a是整數(shù),那么再計算pow(a,p)就會是n了。最難控制的是精度了,還有說n是負數(shù)的情況。不知道為什么直接處理負數(shù)答案
            一直不對,只好把負數(shù)變?yōu)檎龜?shù),同時判斷p不能是偶數(shù)。

            代碼如下:
            #include <stdio.h>
            #include <math.h>

            int main()
            {
                double fN;//用double就不會溢出了,負數(shù)就可以直接轉(zhuǎn)換為正數(shù)了
                
                while (scanf("%lf", &fN), fN)
                {
                    bool bFlag = false;
                    double fP = 31.0;
                    if (fN < 0){fP = 32.0; fN = -fN; bFlag = true;};
                    
                    while (fP > 0)
                    {
                        //必須加上一個精度,防止往下誤差
                        double fA = pow(fN, 1.0 / fP) + 1e-8;
                        //fA必須轉(zhuǎn)換為int,因為一點點誤差,pow之后就會放大很多
                        double fTemp = pow((int)fA, fP);
                        
                        //必須對負數(shù)特殊判斷,不可能出現(xiàn)偶數(shù)的p
                        if (fabs(fN - fTemp) < 1e-8 && (!bFlag || ((int)fP) % 2))
                        {
                            printf("%.f\n", fP);
                            break;
                        }
                        fP -= 1.0;
                    }
                }
                
                return 0;
            }

            posted on 2012-07-26 20:59 yx 閱讀(939) 評論(0)  編輯 收藏 引用 所屬分類: 數(shù)學題

            <2012年7月>
            24252627282930
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            導航

            統(tǒng)計

            公告

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            me

            好友

            同學

            網(wǎng)友

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲午夜久久久| 亚洲午夜福利精品久久| 国产精品久久一区二区三区| 99久久精品国产一区二区| 色综合久久中文字幕无码 | 偷窥少妇久久久久久久久| 老男人久久青草av高清| 国产91色综合久久免费| 久久久久国产精品三级网| 色综合久久综合中文综合网| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 国产精品久久久久久久久鸭| 狠狠精品干练久久久无码中文字幕| 亚洲性久久久影院| 日韩精品久久久久久| 精品精品国产自在久久高清| 久久精品a亚洲国产v高清不卡| 久久夜色撩人精品国产| AV无码久久久久不卡网站下载| 久久这里只精品99re66| 91精品日韩人妻无码久久不卡| 久久亚洲精品中文字幕| 99久久这里只精品国产免费| 国产免费久久精品99久久| 99久久久国产精品免费无卡顿| 亚洲国产精品成人久久蜜臀| 国产成人久久精品二区三区| 久久精品国产亚洲77777| 无码国内精品久久人妻| 思思久久99热只有频精品66| 一本色道久久88加勒比—综合| 国内精品久久久久影院一蜜桃| 蜜桃麻豆WWW久久囤产精品| 一级做a爰片久久毛片免费陪| 精品国产青草久久久久福利 | 久久国产高清一区二区三区| 精品久久久久久久| 国产激情久久久久影院老熟女| A狠狠久久蜜臀婷色中文网| av国内精品久久久久影院| 久久精品人人做人人爽97|