[code] PTA 胡凡算法筆記 DAY051

題目B1017 A除以B

在這裏插入圖片描述

  • 題意
    輸入被除數(最長1000位)與除數(1位),輸出商和餘數。

  • 思路
    基本就是按照我們手算的流程進行的,落一位小了再落一位這樣。不過這裏因爲我開始設置餘數是0,然後首位不會商0,所以後續多處理了幾步,一個是在處理過程中如果出現商0的情況需要單獨處理,再就是結果商就是0的情況,需要單獨處理。
    另外一種方法就是,不夠就商0,之後再來去除首位的0

  • Code in C++

#include <cstdio>
#include <cstring>
const int maxn = 1001;
char num[maxn], result[maxn];

int main()
{
    int dividor, left = 0, j = 0;
    scanf("%s %d", num, &dividor);
    auto lenth = strlen(num);
    for(int i = 0; i < lenth; ++i)
    {
        int tmp = left * 10 + num[i] - '0';
        if (tmp < dividor)
        {
            left = tmp;
            if ( i != 0)
                result[j++] = '0';
        }
        else
        {
            result[j++] = tmp / dividor + '0';
            left = tmp % dividor;
        }
    }
    if (j == 0) result[j++] = '0';
    result[j] = '\0';
    printf("%s %d", result, left);
    return 0;
}


小結

一般大整數的處理好像都是聲明一個結構體進行處理的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章