题目地址
http://www.nowcoder.com/pat/6/problem/4043
解题思路
大数问题。
画出除法流程图,模拟相除过程。
注意边界数值和特殊情况。
AC代码如下:
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
int main()
{
string a;
int b;
cin>>a>>b;
if( a.length()==1 && ( a[0]-'0'<b ) ){//考虑特殊情况:a<b
cout<<"0 "<<a[0]-'0';
}
else{
int R;
string Q;
for( int i=0;i<a.length();++i ){
int temp = R*10 + (a[i]-'0');//每一位的被除数都是上一位余数和该位数值的结合
Q.push_back( temp/b+'0' );
R = temp%b;
}
if( Q[0]=='0' )//解决首位可能为0的问题
cout<<Q.substr( 1,Q.length()-1 )<<" "<<R;//string.substr(start,length)
else
cout<<Q<<" "<<R;
}
return 0;
}