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,各位大牛帮忙看看啊#include "stdio.h" #include "math.h" #include <string> #include <stdlib.h> #include <iostream> using namespace std; int main() { string czBase; int n; while( cin>>czBase>>n ) { int iDotPos = czBase.find("."); int iDotRevPos = czBase.length() - iDotPos - 1 ; if( iDotPos >= 0 ) { if( czBase.at(0) == '0' ) { czBase.erase( 0, iDotPos+1 ); } else { czBase.erase( iDotPos,1 ); } } int iBase = atoi( czBase.c_str() ); int i = 0; int j = 0; int interval = 4; int iTemp = 10000; int carry = 0; while( i < n-1 ) { int beginPos = interval; string czTemp = ""; carry = 0; while( beginPos < czBase.length() ) { int number = atoi( (czBase.substr( czBase.length()- beginPos, interval)).c_str() ); beginPos += interval; number *= iBase; number += carry; carry = 0; if( number / iTemp != 0 ) { carry = number / iTemp; number -= ( number / iTemp *iTemp ); } char *temp = new char[1024]; sprintf( temp, "%d", number ); string czLocal(temp); delete []temp; temp = NULL; if( czLocal.length() < interval) { char *pPrefix = new char[ interval - czLocal.length() +1]; for( int n = 0 ; n < ( interval - czLocal.length());++n ) { pPrefix[n] = '0'; } pPrefix[ n ] = '\0'; string czPrefix( pPrefix); czLocal = czPrefix + czLocal; delete []pPrefix; pPrefix = NULL; } string czTempTemp = czTemp; czTemp = czLocal; czTemp += czTempTemp; } { int number = atoi( (czBase.substr( 0, czBase.length() - beginPos + interval).c_str()) ); number *= iBase; number += carry; carry = 0; if( number / iTemp != 0 ) { carry = number / iTemp; number -= ( number / iTemp *iTemp ); } char *temp = new char[1024]; sprintf( temp, "%d", number ); string czLocal(temp); delete []temp; temp = NULL; if( czLocal.length() != interval) { char *pPrefix = new char[ interval - czLocal.length() +1]; for( int n = 0 ; n < ( interval - czLocal.length());++n ) { pPrefix[n] = '0'; } pPrefix[ n ] = '\0'; string czPrefix( pPrefix); czLocal = czPrefix + czLocal; delete []pPrefix; pPrefix = NULL; } string czTempTemp = czTemp; czTemp = czLocal; czTemp += czTempTemp; } { int number = carry; if( number != 0 ) { char *temp = new char[1024]; sprintf( temp, "%d", number ); string czLocal(temp); delete []temp; temp = NULL; string czTempTemp = czTemp; czTemp = czLocal; czTemp += czTempTemp; } } czBase = czTemp; ++i; } if( iDotPos < 0) { cout<<czBase<<endl; } else { iDotPos = czBase.length() - (iDotRevPos*n); if( iDotPos >= 0 ) { string czPrefix = czBase.substr( 0, iDotPos ); string czPosterior = czBase.substr( iDotPos, czBase.length()-iDotPos); czBase = czPrefix; czBase = czBase + '.'; czBase = czBase + czPosterior; } else { int iZeroNum = (iDotRevPos*n)-czBase.length(); iDotPos = 0; char *pTemp = new char[ iZeroNum + 1]; for( int n = 0; n < iZeroNum;++n) { pTemp[n] = '0'; } pTemp[n] = '\0'; string pPrefix( pTemp ); string pPosterior = czBase; czBase = '.'; czBase += pPrefix; czBase += pPosterior; } int iBegin = iDotPos; i = 0; while( i < iDotPos ) { if( czBase.at(i) != '0' ) { iBegin = i; break; } else { ++i; } } int iEnd = iDotPos-1; i = czBase.length() -1 ; while( i > iDotPos ) { if( czBase.at(i) != '0') { iEnd = i; break; } else { --i; } } string czFinal = czBase.substr( iBegin, iEnd - iBegin + 1 ); cout<<czFinal<<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