[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
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
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
纯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

相关推荐

来,说点可能被同行“骂”的大实话。🙊当初接数字马力Offer时,朋友都说:“蚂蚁的“内包”公司?你想清楚啊!”但入职快一年后的今天,我反而对他有了不一样的看法!🔹&nbsp;是偏见?还是信息差!之前没入职之前外面都在说什么岗位低人一等这类。实际上:这种情况不可至否,不能保证每个团队都是其乐融融。但我在的部门以及我了解的周边同事都还是十分好相处的~和蚂蚁师兄师姐之间也经常开一些小玩笑。总之:身份是蚂蚁公司给的,地位是自己挣的(一个傲娇女孩的自述)。🔹&nbsp;待遇?玩的就是真实!试用期工资全额发!六点下班跑得快(早9晚6或者早10晚7,动态打卡),公积金顶格交。别听那些画饼的,到手的钱和下班的时间才是真的(都是牛马何必难为牛马)。🔹&nbsp;能不能学到技术?来了就“后悔”!我们拥有权限直通蚂蚁知识库,技术栈多到学不完。说“学不到东西”的人,来了可能后悔——后悔来晚了(哈哈哈哈,可以不学但是不能没有)!💥&nbsp;内推地址:https://app.mokahr.com/su/ueoyhg❗我的内推码:NTA6Nvs走我的内推,可以直达业务部门,面试流程更快速,进度可查!今天新放HC,之前挂过也能再战!秋招已经正式开始啦~机会就摆在这,敢不敢来试一试呢?(和我一样,做个勇敢的女孩)
注意格局:去年超发意向是忘了
帮你内推|数字马力 校招
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务