• <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 閱讀(291) 評論(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;
            }
            国内精品人妻无码久久久影院导航| 久久996热精品xxxx| 久久天天躁夜夜躁狠狠| 麻豆一区二区99久久久久| 91精品国产高清久久久久久国产嫩草 | 亚洲午夜久久久久久久久久| 久久精品国产2020| 成人久久精品一区二区三区| 亚洲一级Av无码毛片久久精品| 精品熟女少妇a∨免费久久| 2020国产成人久久精品| 热综合一本伊人久久精品| 一本色道久久88加勒比—综合| 久久99精品久久久久久野外 | 中文字幕无码久久精品青草| 老色鬼久久亚洲AV综合| 久久久免费观成人影院| 99久久99久久精品国产片| 少妇人妻综合久久中文字幕| 国产成人久久激情91| 亚洲中文字幕无码久久2020| 久久精品国产黑森林| 久久久久国产日韩精品网站| 久久综合给合久久狠狠狠97色 | 亚洲国产成人久久综合一 | 9191精品国产免费久久 | 精品久久久久久国产| 国产一区二区精品久久| 久久人妻AV中文字幕| 久久久无码精品午夜| 精品国产91久久久久久久a | 久久免费视频1| 色狠狠久久AV五月综合| 久久精品免费全国观看国产| 久久国产精品无码网站| 国产激情久久久久影院老熟女免费| 久久se精品一区精品二区国产| 久久久久久狠狠丁香| 欧美麻豆久久久久久中文| 国产巨作麻豆欧美亚洲综合久久| 免费精品99久久国产综合精品 |