要求計算A/B,其中A是不超過1000位的正整數,B是1位正整數。你需要輸出商數Q和餘數R,使得A = B * Q + R成立。
阿新 • • 發佈:2018-11-25
題目描述:
本題要求計算A/B,其中A是不超過1000位的正整數,B是1位正整數。你需要輸出商數Q和餘數R,使得A = B * Q + R成立。
輸入描述:
輸入在1行中依次給出A和B,中間以1空格分隔。
輸出描述:
在1行中依次輸出Q和R,中間以1空格分隔。
輸入例子:
123456789050987654321 7
輸出例子:
17636684150141093474 3
核心思想:
用一個字元陣列儲存數字A的每一位,每一步的計算與以下兩項有關:
1、前一位留下的餘數q
2、此位的數字h(存於字元數組裡為字元)
每一步輸出(q×10+h)/B,輸出之後,q變為(q×10+h)%B,為下一步做準備。
另外注意第一位要特殊處理,因為第一位為0的話是不輸出的!
程式碼如下:
#include<stdio.h> int main() { char a[1002]={0}; int b; scanf("%s",a); scanf("%d",&b); int q,h; h=a[0]-'0'; q=h%b; //下一位的q if(h>=b) printf("%d",h/b); int i=1,t; while(a[i]!=0) { h=a[i++]-'0'; printf("%d",(q*10+h)/b); q=(q*10+h)%b; } printf(" %d\n",q); //注意%d前面有空格 }