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 |
Re:格式巨坑 测试n次没有错啊 差点自闭 原来发现是连续输入In Reply To:格式巨坑 测试n次没有错啊 差点自闭 原来发现是连续输入 Posted by:xiaojiner at 2019-03-30 17:35:49 > #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