转载 from http://tech-wonderland.net/blog/pat-basic-level-practice-1016-1020-solutions.html
解题思路: 直接模拟草稿纸上的除法计算就行了. 注意几个特殊case, 比如求得的商的首位0输出问题, 4 / 8 应该输出 0, 4, 但是14/8 应该输出1, 6, 而不是01, 6. 下面是可以AC的代码:
#include
#include
int gao(const std::string & A, int B, std::string *pstrResult, int *pQuite) {
int Q;
int len = A.size();
int curr = A[0] - '0';
for(int i = 1; i < len; ++i) {
Q = curr % B;
pstrResult->push_back(curr / B + '0');
curr = Q * 10 + A[i] - '0';
}
Q = curr % B;
pstrResult->push_back(curr / B + '0');
*pQuite = Q;
return 0;
}
int main() {
std::string A;
int B;
std::cin >> A >> B;
std::string strResult;
int iQuote;
int iRet = gao(A, B, &strResult, &iQuote);
if(iRet) {
}
if(strResult.size() > 1 && strResult[0] == '0')
std::cout << strResult.substr(1) << ' ' << iQuote << std::endl;
else
std::cout << strResult << ' ' << iQuote << std::endl;
return 0;
}