刷題訓練——PAT (Basic Level)-1017

1017. A除以B (20)

時間限制
100 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
作者
CHEN, Yue

本題要求計算A/B,其中A是不超過1000位的正整數,B是1位正整數。你需要輸出商數Q和餘數R,使得A = B * Q + R成立。

輸入格式:

輸入在1行中依次給出A和B,中間以1空格分隔。

輸出格式:

在1行中依次輸出Q和R,中間以1空格分隔。

輸入樣例:
123456789050987654321 7
輸出樣例:
17636684150141093474 3



#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
    int A[10000],B,Q[10000],R=0;
    char c;
    A[0]=0;Q[0]=0;
    int flag_BbigerthanA=1;
    while((c=getchar())!=' ')
        A[++A[0]]=c-'0';
    B=getchar()-'0';
    for(int i=1;i<=A[0];++i){
        if(R*10+A[i]>=B){
            Q[++Q[0]]=(R*10+A[i])/B;
            R=R*10+A[i]-(R*10+A[i])/B*B;
            flag_BbigerthanA=0;
        }
        else{
            R=A[i];
            if(i!=1)
                Q[++Q[0]]=0;
        }
    }
    for(int i=1;i<=Q[0];++i)
        printf("%d",Q[i]);
    if(flag_BbigerthanA)printf("0 %d\n",R);
    else printf(" %d\n",R);
    return 0;
}


乍一眼看還以爲寫大數除法,不過還好這個除數是個位數

WA一次是因爲沒考慮到B>A的情況





發佈了53 篇原創文章 · 獲贊 10 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章