[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;
}
全部评论
#include <iostream> #include <string> using namespace std; int main() { string s,c = ""; int n, tmp,res = 0; cin >> s >> n; for (size_t i = 0; i < s.size();i++) { tmp = res * 10 + (s[i] - '0'); res = tmp % n; if (i == 0 && tmp / n == 0)continue; c.append(1, tmp / n + '0'); } cout << c + " " << res << endl; return 0; }
1
送花
回复 分享
发布于 2019-06-24 00:34
纯C写的。把判我错的那个测试用例在自己电脑上试一下,然后用字符串比对看了看两个的输出结果,是一样的,但是真心不清楚为毛判断我的代码是错的。(不是超时不是编译错误) 自己的电脑是用的TDM_64 #include <stdio.h> int main(int argc, char *argv[]) { int i,j=0,flag=0; char beichushu[1001]; char shang [1001]; int chushu; int shang_=0,yushu=0; scanf("%s %d",beichushu,&chushu); for(i=0;beichushu[i]!='\0';i++) { if((beichushu[i]-48+yushu*10)/chushu+flag) { shang[j++]=(beichushu[i]-48+yushu*10)/chushu+48; flag++; } yushu=(beichushu[i]-48+yushu*10)%chushu; } printf("%s",shang); printf(" %d",yushu); }
点赞
送花
回复 分享
发布于 2015-12-28 20:51
国泰君安
校招火热招聘中
官网直投
import java.math.BigInteger; import java.util.Scanner; /** * @author DGW-PC * @date 2018年6月3日 */ public class A除以B { private static Scanner input = new Scanner(System.in); public static void main(String[] args) { BigInteger A = new BigInteger(input.next()); BigInteger[] remainder = A.divideAndRemainder(new BigInteger(input.next())); System.out.println(remainder[0]+" "+remainder[1]); } }
点赞
送花
回复 分享
发布于 2018-06-03 00:56
import java.util.Scanner; public class Main {     public static void main(String args[]) {         Scanner scanner = new Scanner(System.in);         String A = scanner.next();         int B = scanner.nextInt();         String addString = "";         StringBuffer sb = new StringBuffer();         for (int i = 0; i < A.length(); i++) {             int divideString = Integer.parseInt(addString + A.charAt(i));             if (i == 0 && divideString / B == 0) {             } else {                 sb.append(divideString / B);             }             addString = divideString % B + "";         }         System.out.print(sb.toString() + " " + addString);     } }
点赞
送花
回复 分享
发布于 2018-07-25 16:54

相关推荐

点赞 2 评论
分享
牛客网
牛客企业服务