洛谷刷题记——P1480 A/B Problem

又是高精系列题,这个题是高精数除以低精数的题,是高精系列题中最简单的。

题目描述

https://www.luogu.com.cn/problem/P1480

整体思路

模拟除法竖式,没啥好说的。

唯一需要注意的点:去除前导零,可以建立一个初始值为false的布尔变量,当它为false时不输出,直到遇到非零数之后变为true。

代码展示

拒绝抄袭,共创和谐社会[机智]

#include <iostream> // std::cin, std::cout, std::endl
#include <string> // std::string

using namespace std;

int main(void)
{
    bool noZero = false; // 上文所述的标志变量
    int aNum = 0, ans = 0, b = 0, rem = 0;
    string aStr;

    cin >> aStr >> b;

    for (int i = 0; i < aStr.size(); i++) // 遍历每一位
    {
        aNum = aStr[i] - '0'; // 将当前位转换为数字
        rem = rem * 10 + aNum; // 加上上一位的余数×10
        ans = rem / b; // 除
        rem %= b; // 取余

        if (noZero || ans) // 当noZero=true时,或当前位不等于0
        {
            noZero = true; // 当前位已经不等于0了,不可能存在前导零

            cout << ans; // 输出
        }
    }

    cout << endl;

    return 0;
}

写在最后

又完成了一题呢\(^o^)/YES!

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

返回顶部