zoukankan      html  css  js  c++  java
  • poj1001

    #include <iostream>   
    #include<iomanip>   
    #include<cstring>   
    using namespace std;  
    int s;  
    void chen(char a[],char b[])//a=a*b      
    { int i,j,k,l,sum,c[410]={0};    
      l=strlen(a)+strlen(b);    
      for(i=strlen(b)-1;i>=0;i--)    
      for(j=strlen(a)-1,k=i+j+1;j>=0;j--,k--)    
      { sum=(b[i]-'0')*(a[j]-'0')+c[k];    
        c[k]=sum%10;c[k-1]+=sum/10;                         
      }    
      for(i=c[0]?0:1,j=0;i<l;i++)    
        a[j++]=(c[i]+'0'); a[j]=0;    
    }    
    void quw0(char a[]) //去除尾部多余的零   
    {   int i=strlen(a)-1;  
     while(a[i]=='0') {a[i]=0;i--;}  
    } 
     
    void jilu(char a[])  
    {   int i,t;
        for(i=0;i<strlen(a);i++) //判断有没有小数点
            if(a[i]=='.') break;
        if(i!=strlen(a))  //有小数点
        {
            for(i=strlen(a)-1,s=0;i>=1;i--)// s记录小数位数   
                if(a[i]!='.') s++;  
                    else break;
            if(a[i=0]=='0') //  0.0123变成123   
                {   for(i=2;i<strlen(a);i++)  
                    if(a[i]!='0') {strcpy(a,&a[i]);break;}  
                }  
            else    //将1.4321 变成14321   
            {   for(t=0,i=1;i<strlen(a)-1;i++)  
                {   if(a[i]=='.') t=1;   
                    if(t) a[i]=a[i+1];  
                }  
                a[i]=0;  
            } 
        }
        
    }  
       
    void show(char a[])  
    {   int i;  
        if(s>=strlen(a)) cout<<'.'<<setfill('0')<<setw(s)<<a<<endl;// 前面补零   
        else                                   //不用补零,直接加入小数点输出   
            {for(i=0;i<strlen(a);i++)   
            if(strlen(a)-s==i) {cout<<'.'<<&a[i]; break;}  
                else cout<<a[i];  
            cout<<endl;  
            }  
      
    }  
      
    int main()  
    {  
     int n; char b[205],a[205];  
     while(cin>>b>>n)  
     { if(n==0) {cout<<1<<endl;continue;}
      s=0;  
      quw0(b);
      jilu(b);  
      strcpy(a,b);  
      for(int i=2;i<=n;i++)   
        chen(a,b);  
        s*=n; //结果的小数位数   
      show(a);  
     }   
    return 0;  
    }  
  • 相关阅读:
    java学习笔记(5)
    java学习笔记(4)
    java学习笔记(3)
    java学习笔记(2)
    java学习笔记(1)
    很棒的Nandflash资料
    Tx2440_Lcd
    git-github学习心得
    多文档编辑器
    假设检验
  • 原文地址:https://www.cnblogs.com/Alandre/p/3614482.html
Copyright © 2011-2022 走看看