[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

相关推荐

关于“实习生工资多少才算正常”,其实并没有一个放之四海而皆准的标准,但如果结合一线城市的生活成本、工作强度以及实习本身创造的价值来看,我个人认为6000&nbsp;元左右应当是一个基本及格线,也就是每天&nbsp;200&nbsp;多元。如果能达到&nbsp;300、400&nbsp;元一天,甚至更高,那无疑是更理想的状态。首先,从现实成本看,房租、通勤、餐饮几乎都是刚性支出。低于这个水平的实习,往往意味着实习生需要用家庭或存款“倒贴”工作,这在长期来看并不合理。实习本质上是学习,但并不等于“廉价劳动力”,更不应该是经济压力的来源。其次,愿意给实习生更高薪资的公司,通常不会是差公司。这至少说明两点:一是公司资金相对充足,不是靠压缩人力成本勉强维持;二是公司认可实习生的价值,希望你真正参与业务、创造产出,而不是只做边角料工作。很多高薪实习往往伴随着更规范的培养体系、更高的信息密度和更真实的项目经验。当然,高工资并不等于一切,但它往往是一个重要信号。能给到&nbsp;300、400&nbsp;元一天甚至更多的公司,往往对效率、能力和长期发展更有追求,也更可能处在一个有前景的赛道中。总结来说,实习工资不仅是钱的问题,更是公司态度、实力和发展前景的体现。在条件允许的情况下,争取一份“付得起你时间”的实习,本身就是一种理性选择。
北国牛马:你是不是忘了你一周只能上五天班,月薪6000那你日薪就得300了,日薪200一个月也就4000,也就刚好覆盖生活成本了
实习生工资多少才算正常?
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

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