[PAT解题报告] A除以B (20)
转载 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 <iostream> #include <string> 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; }