• <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 閱讀(287) 評論(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;
            }
            日本精品一区二区久久久| 91久久精品国产成人久久| 2021国产精品午夜久久 | 久久99国内精品自在现线| 国产婷婷成人久久Av免费高清| 国产精品VIDEOSSEX久久发布| 三级三级久久三级久久| 精品国产一区二区三区久久| 久久精品无码一区二区日韩AV| 欧美精品国产综合久久| 久久se精品一区二区| 国产精品乱码久久久久久软件 | 久久99国产精品成人欧美| 婷婷伊人久久大香线蕉AV | 久久国产精品波多野结衣AV | 久久久青草久久久青草| 久久午夜夜伦鲁鲁片免费无码影视| 国内精品伊人久久久久av一坑| 狠狠色婷婷综合天天久久丁香| AV无码久久久久不卡蜜桃| 久久99精品久久久久久噜噜| 国产V综合V亚洲欧美久久| 国产激情久久久久久熟女老人| 91精品国产高清久久久久久91| 伊人色综合久久天天人手人婷| 亚洲а∨天堂久久精品| 久久久99精品成人片中文字幕| 国产精品久久久久久| 99久久中文字幕| 国产精品久久网| 国产亚洲色婷婷久久99精品| 久久久精品国产sm调教网站| 无码人妻久久久一区二区三区| 中文字幕久久久久人妻| 欧美黑人激情性久久| 久久精品国产久精国产思思| 成人久久精品一区二区三区| 精品乱码久久久久久久| 久久久久久久99精品免费观看| 国产一级持黄大片99久久| 精品久久久久久99人妻|