#include<iostream>
#include<fstream>
#include<string>
using namespace std;
string add(string a,string b){
int dist=max(a.length(),b.length())-min(a.length(),b.length());
if(a.length()>b.length()){
for(int i=0;i<dist;++i)
b="0"+b;
}else{
for(int i=0;i<dist;++i)
a="0"+a;
}
int jw=0;
for(int i=0;i<a.length();++i){
int a1=a[a.length()-1-i]-'0';
int b1=b[a.length()-1-i]-'0';
a[a.length()-1-i]=char('0'+(a1+b1+jw)%10);
jw=(a1+b1+jw)/10;
}
if(jw>0)
return '1'+a;
else
return a;
}
string p(string s,char b){
int jw=0;
int b1=b-'0';
for(int i=0;i<s.length();++i){
int a1=s[s.length()-1-i]-'0';
s[s.length()-1-i]=char((a1*b1+jw)%10+'0');
jw=(a1*b1+jw)/10;
}
if(jw>0)
s=char(jw+'0')+s;
return s;
}
string e(string total,string num){
string sum="0";
for(int i=0;i<num.length();++i){
char b=num[num.length()-1-i];
string sum2=p(total,b);
sum=add(sum,sum2);
total+="0";
}
return sum;
}
int main(){
string s;
int n;
//ifstream cin("1.txt");
while(cin>>s>>n){
int xs=0;
string num="";
for(int i=0;i<s.length();++i){
if(s[i]=='.'){
xs=s.length()-i-1;
}else
num+=s[i];
}
xs*=n;
string total=num;
for(int i=1;i<n;++i){
total=e(total,num);
}
//进行处理
string s1="",s2="";
s=total;
bool isfirst=true;
for(int i=0;i<s.length()-xs;++i){
if(s[i]=='0'&&isfirst){
}else{
s1+=s[i];
isfirst=false;
}
}
bool islast=true;
for(int i=1;i<=xs;++i){
if(s[s.length()-i]=='0'&&islast){
}else{
s2=s[s.length()-i]+s2;
islast=false;
}
}
if(islast)
cout<<s1<<endl;
else
cout<<s1<<"."<<s2<<endl;
}
return 0;
}
poj 1001 大数计算
最新推荐文章于 2020-03-10 22:55:13 发布