Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
格式巨坑 测试n次没有错啊 差点自闭 原来发现是连续输入#include <iostream> #include <string> using namespace std; string twoDataAdd(string s1,string s2) { string max,min; int maxLength,minLength; if(s1.length()>s2.length()) { max=s1; min=s2; } else { max=s2; min=s1; } maxLength=max.length(); minLength=min.length(); int i,j; for(i=maxLength-1,j=minLength-1;j>=0;j--,i--) { max[i]=max[i]+min[j]-'0'; } for(i=maxLength-1;i>0;i--) { if(max[i]>'9') { max[i]-=10; max[i-1]+=1; } } if(max[0]>'9') { max[0]-=10; max="1"+max; } return max; } string twoDataMultiply(string s1,string s2) { string max,min; if(s1.length()>s2.length()) { max=s1; min=s2; } else { max=s2; min=s1; } int i,j,z; int s1Length=max.length(); int s2Length=min.length(); string *calculateStringArray=new string[s2Length]; for(i=s2Length-1,z=0;i>=0;i--,z++) { int s2BiteToInt=(char)min[i]-'0'; int carryData=0; string perString=""; for(j=s1Length-1;j>=0;j--) { int s1BiteTonInt=(char)max[j]-'0'; int temp=s2BiteToInt*s1BiteTonInt; int tag1=temp/10; int tag2=temp%10; int tempData=tag2+carryData; int tagCarryData=0; if(tempData>=10) { tagCarryData+=1; tempData%=10; if(tag1>0) { tagCarryData+=tag1; } } else { if(tag1>0) { tagCarryData+=tag1; } } carryData=tagCarryData; char c=tempData+'0'; perString=c+perString; } if(carryData>0) { char b=carryData+'0'; perString=b+perString; } for(int k=0;k<z;k++) { perString+='0'; } calculateStringArray[z]=perString; } string eventuallyData=calculateStringArray[0]; if(z>0) { for(int m=1;m<z;m++) { eventuallyData=twoDataAdd(eventuallyData,calculateStringArray[m]); } } return eventuallyData; } int main() { string templateString;//输入的数据 int n;//它的n次幂 while(cin>>templateString>>n) { int pointLacation=templateString.find('.'); int templateStringLength=templateString.length(); int allPoint=(templateStringLength-pointLacation-1)*n; string eventuallyData; if(pointLacation==-1) { allPoint=0; } string s1=""; string s2=""; int i; for(i=0;i<pointLacation;i++) { s1+=templateString[i]; } for(i=pointLacation+1;i<templateStringLength;i++) { s2+=templateString[i]; } string actualString=s1+s2; int actualStringLength=actualString.length(); if(actualString[0]=='0') { for(i=1;i<actualStringLength;i++) { if(i!=0) break; } actualString.erase(0,i); } eventuallyData=actualString; while(n>=2) { eventuallyData=twoDataMultiply(eventuallyData,actualString); n--; } if(allPoint<eventuallyData.length()&&allPoint!=0) { eventuallyData.insert(eventuallyData.length()-allPoint,"."); } else if(allPoint==eventuallyData.length()) { eventuallyData.insert(0,"."); } else if(allPoint>eventuallyData.length()) { int replacePoint=allPoint-eventuallyData.length(); string temp1="."; while(replacePoint>0) { temp1=temp1+'0'; replacePoint--; } eventuallyData.insert(0,temp1); } int rightRange=eventuallyData.length(); int sumLength=rightRange; if(eventuallyData.find('.')!=-1) { while(eventuallyData[rightRange-1]=='0') { rightRange--; } eventuallyData.erase(rightRange,sumLength-rightRange); if(eventuallyData[rightRange-1]=='.') { eventuallyData.erase(rightRange-1,1); } } cout<<eventuallyData<<endl; } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator