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

            Brian Warehouse

            Some birds aren`t meant to be caged, their feathers are just too bright... ...
            posts - 40, comments - 16, trackbacks - 0, articles - 1

            POJ 1001 Exponentiation

            Posted on 2010-08-17 14:02 Brian 閱讀(288) 評(píng)論(0)  編輯 收藏 引用 所屬分類: POJ

            分類開(kāi)篇語(yǔ): 第一個(gè)程序搞了好幾天,發(fā)現(xiàn)了很多問(wèn)題。POJ不保證按順序做且更新速度肯定不會(huì)很快。有些題自己做不出來(lái)借鑒別人的會(huì)注明出處。很多算法都需要從網(wǎng)上找,第一題的大浮點(diǎn)數(shù)相乘的核心算法就是這樣找來(lái)的。我心里明白,雖然AC了,但是邊緣數(shù)據(jù)處理的很粗糙,我自己都發(fā)現(xiàn)幾個(gè)bug了,但是依然AC了。

            本題主要注意將字符串轉(zhuǎn)化為實(shí)際的數(shù)字然后借鑒數(shù)制的思想來(lái)進(jìn)行大數(shù)相乘。

            Description

            Problems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the national debt is a taxing experience for many computer systems.

            This problem requires that you write a program to compute the exact value of Rn where R is a real number ( 0.0 < R < 99.999 ) and n is an integer such that 0 < n <= 25.

            Input

            The input will consist of a set of pairs of values for R and n. The R value will occupy columns 1 through 6, and the n value will be in columns 8 and 9.

            Output

            The output will consist of one line for each line of input giving the exact value of R^n. Leading zeros should be suppressed in the output. Insignificant trailing zeros must not be printed. Don't print the decimal point if the result is an integer.

            Sample Input

            95.123 12
            0.4321 20
            5.1234 15
            6.7592  9
            98.999 10
            1.0100 12
            

            Sample Output

            548815620517731830194541.899025343415715973535967221869852721
            .00000005148554641076956121994511276767154838481760200726351203835429763013462401
            43992025569.928573701266488041146654993318703707511666295476720493953024
            29448126.764121021618164430206909037173276672
            90429072743629540498.107596019456651774561044010001
            1.126825030131969720661201
            編譯器C++ 源碼:
            #include <iostream>
            #include <string>
            using namespace std;
            #define MAX 255
             
            int getnum(string s,int *c) // get real number of R
            {
                int i=0,j=0,t[MAX];
                memset(t,0,sizeof(int)*MAX); // a stores 0
               
             while (i < 6) // R value 1 through 6
             {
              if (s[i] != '.')
              {
               t[j]=s[i]-'0';
               j++;
              }   
              i++;
             }     // a`s length = 5
               
             for (j=0; j<5; j++)
              c[j]=t[4-j]; // c stores in order from a
              
             for (i=0; s[i] != '.'; i++); // find decimal point
             return (5-i); // the position of . point
            }
             
            void multi(int *a,int *b) // big-multiplication
            {
                int i=0,j,r=0,t[MAX];
                memset(t,0,sizeof(int)*MAX); // t stores 0
               
             for (; i<5; i++)
              for (j=0; j<255; j++)
               t[i+j] += a[i]*b[j]; // core algorithms!
             
             for (i=0; i<255; i++)
             {
              b[i]=(r+t[i])%10; // r always stores remainder
              r=(r+t[i])/10;   // b stores the result
             }    
            }    // basic algorithms of b-m
            int main() 
            {
                int i,j,d_pos,n,a[MAX],b[MAX];
                string s;
                while (cin>>s>>n)
             {
              
              memset(b,0,sizeof(int)*MAX);
              memset(a,0,sizeof(int)*MAX);
              d_pos=getnum(s,a);
              getnum(s,b);
              
              for (i=0; i<n-1; i++)
               multi(a,b);  // a is a loop invariant
              
              for (i=254; !b[i]; i--); //find last non-zero  
              for (j=0; !b[j]; j++); // find first non-zero
              
              for (; i >= n*d_pos; i--) // loop n times
               cout<<b[i];
              if (n*d_pos >= j+1) cout<<"."; //pay attention
              for (i=n*d_pos-1; i>=j; i--)
               cout<<b[i];  //from back formating output
              
              cout<<endl;
             }
             return 0;
            }
            久久久久免费看成人影片| 久久亚洲精品视频| 日产精品久久久久久久性色| 久久国产精品无码HDAV| 久久99久久成人免费播放| 2021国内久久精品| 91精品婷婷国产综合久久| 亚洲精品成人久久久| 久久97精品久久久久久久不卡| 国产精品美女久久久网AV| 女人高潮久久久叫人喷水| 狠狠色丁香久久综合五月| 久久久久久精品无码人妻| 久久久国产精品| 波多野结衣中文字幕久久| 亚洲国产精品无码久久九九| 一级做a爱片久久毛片| 精品国产乱码久久久久久呢| 久久青青草原亚洲av无码| 成人资源影音先锋久久资源网| 午夜精品久久久久久久| 日本高清无卡码一区二区久久| 99精品久久精品| 久久精品国产亚洲一区二区| 久久水蜜桃亚洲av无码精品麻豆 | 思思久久99热免费精品6| 国产精品对白刺激久久久| 伊人久久大香线蕉亚洲五月天| 亚洲精品tv久久久久| 久久亚洲中文字幕精品一区| 久久久久免费视频| 亚洲精品tv久久久久久久久久| 久久久久亚洲AV无码专区网站 | 97久久国产综合精品女不卡 | 青青草国产精品久久久久| 国产成年无码久久久久毛片| 久久综合九色综合网站| 国产一级持黄大片99久久| 国产91色综合久久免费| 99久久亚洲综合精品成人| 精品久久久无码中文字幕天天|