• <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 閱讀(292) 評論(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;
            }
            亚洲国产精品18久久久久久| 国内精品伊人久久久久妇| 狠狠色丁香久久综合五月| 国内精品久久国产大陆| 国内精品久久久久久久亚洲| 久久久久亚洲av成人网人人软件| 人妻久久久一区二区三区| 国产一区二区三精品久久久无广告| 国产精品99久久久精品无码| 久久精品免费观看| 久久久久久久久波多野高潮| 亚洲欧美精品伊人久久| 亚洲乱码中文字幕久久孕妇黑人| 精品久久久无码中文字幕天天| 亚洲精品国精品久久99热一| 久久久久久亚洲精品不卡 | 影音先锋女人AV鲁色资源网久久| 日本三级久久网| 久久99精品久久久久子伦| 亚洲色欲久久久久综合网| 国产无套内射久久久国产| 精品蜜臀久久久久99网站| 97精品国产97久久久久久免费| 久久国产视频99电影| 秋霞久久国产精品电影院| 久久综合丝袜日本网| 精品精品国产自在久久高清| 久久久无码一区二区三区| 97精品依人久久久大香线蕉97| 午夜精品久久久内射近拍高清 | 狠狠色狠狠色综合久久| 午夜视频久久久久一区| 青青热久久国产久精品 | 日韩精品久久久久久| av午夜福利一片免费看久久| 久久99精品久久久久子伦| 久久久久久久综合日本亚洲 | 亚洲精品乱码久久久久久按摩 | 久久久久久毛片免费播放| 国产人久久人人人人爽 | 国产A级毛片久久久精品毛片|