• 51nod 1873 高精度计算


    JAVA BigDecimal

    import java.util.*;
    import java.math.*;
    
    public class Main {
    
        public static void main(String[] args) {
            Scanner cin = new Scanner(System.in);
            String str = cin.next();
            int n = cin.nextInt();
            BigDecimal res = new BigDecimal(1);
            final BigDecimal bd = new BigDecimal(str);
            for(int i = 0; i < n; ++i){
                res = res.multiply(bd);
            }
            str = res.stripTrailingZeros().toPlainString();
            System.out.println(str.startsWith("0.") ? str.substring(1) : str);
        }
    }

    C++

    #include<bits/stdc++.h>  
    using namespace std;  
      
    string multi(string a,string b)  
    {  
        int i,j,arr[200],len=a.length()+b.length();  
        memset(arr,0,sizeof(arr));  
        reverse(a.begin(),a.end());  
        reverse(b.begin(),b.end());  
        for(i=0;i<a.length();i++)  
        {  
            for(j=0;j<b.length();j++)  
            {  
                arr[i+j]+=(a[i]-'0')*(b[j]-'0');  
            }  
        }  
        for(i=0;i<len;i++)  
        {  
            arr[i+1]+=arr[i]/10;  
            arr[i]%=10;  
        }  
        string ret=string(len,'0');  
        for(i=0;i<len;i++)  
            ret[i]+=arr[i];  
        reverse(ret.begin(),ret.end());  
        return ret;   
    }  
      
    string strpow(string x,int p)  
    {  
        string ret="1";  
        while(p)  
        {  
            if(p&1)  
                ret=multi(ret,x);  
            x=multi(x,x);  
            p>>=1;   
        }  
        return ret;  
    }  
      
    int main()  
    {  
        string a;  
        int n,i,index;  
        while(cin>>a>>n)  
        {  
            index=a.find('.');  
            if(index==-1)  
                index=0;  
            else  
            {  
                a=a.substr(0,index)+a.substr(index+1);  
                index=(a.length()-index)*n;  
            }  
            a=strpow(a,n);  
            a=a.substr(0,a.length()-index)+"."+a.substr(a.length()-index);  
            for(i=0;i<a.length();i++)  
            {  
                if(a[i]!='0')  
                    break;  
            }  
            a=a.substr(i);  
            for(i=a.length()-1;i>=0;i--)  
            {  
                if(a[i]=='.')  
                {  
                    a=a.substr(0,i);  
                    break;  
                }  
                else if(a[i]!='0')  
                {  
                    a=a.substr(0,i+1);  
                    break;  
                }  
            }  
            cout<<a<<endl;  
        }  
    }  

    追求效率?开发时间

    追求性能?运行时间、消耗内存

  • 相关阅读:
    深入理解Java虚拟机之.class文件的数据结构一
    计算机操作系统之文件管理二
    计算机操作系统之文件管理一
    深入理解Java虚拟机之垃圾收集二
    深入理解Java虚拟机之垃圾收集一
    深入理解Java虚拟机之内存管理
    iscsi remote boot
    Autoconfigure enviroment via Python script
    How to set up a PXE server with REHL 7 OS
    jQuery如何获取动态添加的元素
  • 原文地址:https://www.cnblogs.com/kimsimple/p/7616911.html
Copyright © 2020-2023  润新知