美文网首页
B1017 A除以B (20分)

B1017 A除以B (20分)

作者: km15 | 来源:发表于2020-02-14 12:02 被阅读0次

/*
题意:
1、高精度除法
A是不超过1000的整数,B是一位数,所以你需要输出商和余数R

解题:
1、结构体
2、逆着赋值
3、打印大整数
4、除法实现

learn && wrong:
1、memset函数在cstring和iostream都有
2、记不住呀divide,整整有8个模块

*/

#include <iostream>
#include <cstring>
using namespace std;

//结构体 
struct bign {
    int d[1001];
    int len;
    bign(){
        memset(d,0,sizeof(d));
        len = 0;
    }
}; 

//转换成bign 
bign change(char str[]){
    bign c;
    c.len = strlen(str);
    for(int i = 0;i < c.len;++i){
        c.d[i] = str[c.len - i - 1] - '0';
    } 
    
    return c;
} 

//打印函数 
void print(bign a){
    for(int i = a.len - 1;i >= 0;--i){
        cout<<a.d[i];
    }
}

bign divide(bign a,int b,int &r){
    bign c;
    c.len = a.len;
    for(int i = a.len - 1;i >= 0;--i){
        r = r  * 10 + a.d[i];
        if(r < b)   c.d[i] = 0;
        else{
            c.d[i] = r / b;
            r = r % b ;
        }
    }
    
    while(c.len - 1 >= 1 && c.d[c.len - 1] == 0){
        c.len--;
    }
    return c;
}

int main(int argc, char** argv) {
    char str[1001];
    int b;
    cin>>str>>b;
    int r = 0;
    bign a = change(str);   //转为大整数 
    bign c = divide(a,b,r); //除法 
    print(c); 
    cout<<" "<<r;
    return 0;
}

相关文章

  • B1017 A除以B (20分)

    /*题意:1、高精度除法A是不超过1000的整数,B是一位数,所以你需要输出商和余数R 解题:1、结构体2、逆着赋...

  • B1017 Queueing at Bank (排队模拟)

    B1017 Queueing at Bank (25分) Notice that the bank opens f...

  • 除和除以的区别

    a除b是 b除以a 就是b/a; a除以b 是a/b;

  • 1017 A除以B

    本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 ...

  • 小学数学最容易出错的16个小细节

    1.除和除以的区别 a除以b或a被b除,列式为:a÷b a除b或用a去除b,列式为:b÷a 2.半圆的周长≠圆周长...

  • 1017.A除以B

    题目描述 本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A ...

  • pat考试-A除以B

    题目描述: 本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A...

  • 1017A除以B

    问题描述:本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q...

  • PAT-B 1017 A除以B(C语言)

    题目 链接:PAT (Basic Level) Practice 1017 A除以B 本题要求计算 A/B,其中 ...

  • PAT Basic 1017 A除以B

    题目 本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和...

网友评论

      本文标题:B1017 A除以B (20分)

      本文链接:https://www.haomeiwen.com/subject/qledfhtx.html