• <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 閱讀(283) 評論(0)  編輯 收藏 引用 所屬分類: POJ

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

            本題主要注意將字符串轉(zhuǎn)化為實際的數(shù)字然后借鑒數(shù)制的思想來進(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;
            }
            久久99热这里只有精品国产| 精品九九久久国内精品| 久久亚洲精品国产精品| 久久亚洲中文字幕精品一区四 | 久久笫一福利免费导航| 精品久久久久久国产91| 久久久久国产日韩精品网站| 国产高清美女一级a毛片久久w| 97久久国产亚洲精品超碰热| 久久久无码一区二区三区| 亚洲AV成人无码久久精品老人| 久久久久久国产精品无码下载 | 日日狠狠久久偷偷色综合0| 伊人久久大香线蕉精品| 国产99久久久久久免费看| 久久狠狠爱亚洲综合影院| 久久WWW免费人成—看片| 无码乱码观看精品久久| 精品国产乱码久久久久久郑州公司 | 2021最新久久久视精品爱| 久久综合亚洲鲁鲁五月天| 国产一区二区精品久久岳| 91精品国产91久久久久福利| 一本色道久久88—综合亚洲精品| 久久精品水蜜桃av综合天堂 | 国产精品内射久久久久欢欢| 久久精品亚洲中文字幕无码麻豆| 香蕉久久夜色精品国产2020| 香港aa三级久久三级老师2021国产三级精品三级在 | 性欧美丰满熟妇XXXX性久久久 | 国产免费久久精品99re丫y| 久久精品中文字幕第23页| 久久国产精品-国产精品| 99久久精品国内| 国产精品久久久久9999高清| 国产∨亚洲V天堂无码久久久 | 波多野结衣AV无码久久一区| 精品久久久久久久久免费影院| 国产精品亚洲综合久久| 波多野结衣AV无码久久一区| 亚洲精品无码成人片久久|