首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1017 A除以B (20 分)

1017 A除以B (20 分)

作者头像
可爱见见
发布2019-09-09 16:02:00
1.2K0
发布2019-09-09 16:02:00
举报
文章被收录于专栏:卡尼慕卡尼慕

1017 A除以B (20 分)

本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。

输入格式:

输入在一行中依次给出 AB,中间以 1 空格分隔。

输出格式:

在一行中依次输出 QR,中间以 1 空格分隔。

输入样例:

123456789050987654321 7

输出样例:

17636684150141093474 3

思路

很明显这一大串数字如果想直接用整形直接装入就直接错了,数字太大,无法直接使用,因此这里需要手动实现除法。

只要注意一点就可以了:

//商
div = (mod * 10 + (A[i] - '0')) / B;
//余数
mod = ((mod * 10 + A[i] - '0')) % B;

一位一位计算即可,余数只需要输出最后一次计算的余数,而商则需要逐位输出。

// 1017 A除以B (20 分).cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <string>
using namespace std;
int main(){
    //输入
    string A;
    int B;
    cin >> A >> B;
    int len = A.length();
    int div, mod;
    div = (A[0] - '0') / B;
    mod = (A[0] - '0') % B;
    if (div != 0 || len == 1) {
        cout << div;
    }
    for (int i = 1; i < len; i++) {
        //商
        div = (mod * 10 + (A[i] - '0')) / B;
        cout << div;
        //余数
        mod = ((mod * 10 + A[i] - '0')) % B;
    }
    cout << ' ' << mod;
    return 0;
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 卡尼慕 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 输入格式:
  • 输出格式:
  • 输入样例:
  • 输出样例:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档