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

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

            本題主要注意將字符串轉化為實際的數字然后借鑒數制的思想來進行大數相乘。

            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久久无码一区人妻a黑| 国产999精品久久久久久| yy6080久久| 久久久久亚洲av无码专区导航| 久久99精品久久久久久久不卡| 99久久99久久精品国产片| 欧美一级久久久久久久大片 | 国产精品久久国产精品99盘 | 国产精品亚洲综合久久 | 国产精品久久久久a影院| 久久亚洲国产成人精品性色| 精品久久久久久国产免费了| 99久久精品国产一区二区| 51久久夜色精品国产| 精品一二三区久久aaa片| 亚洲狠狠综合久久| 久久香综合精品久久伊人| 无码精品久久一区二区三区| 久久精品国产免费| 色欲综合久久躁天天躁蜜桃| 一本一道久久a久久精品综合| 久久精品国产99国产精品澳门| 久久99精品国产麻豆宅宅| 亚洲AV伊人久久青青草原| 99久久免费只有精品国产| 97久久超碰国产精品2021| 亚洲午夜久久久影院| 久久久久久精品成人免费图片| 久久人人爽人人爽AV片| 四虎国产精品免费久久5151| 久久国产免费观看精品3| 欧美噜噜久久久XXX| 亚洲中文精品久久久久久不卡| 久久综合偷偷噜噜噜色| 色综合久久88色综合天天 | 精品欧美一区二区三区久久久| 国产韩国精品一区二区三区久久| 久久久亚洲欧洲日产国码二区 | 亚洲七七久久精品中文国产| 日本精品久久久久影院日本 | 国产精品久久影院|