PAT (Basic)乙級---1017(20 分) A除以B
阿新 • • 發佈:2018-12-16
本題要求計算 A/B,其中 A 是不超過 1000 位的正整數,B 是 1 位正整數。你需要輸出商數 Q 和餘數 R,使得 A=B×Q+R 成立。
輸入格式:
輸入在一行中依次給出 A 和 B,中間以 1 空格分隔。
輸出格式:
在一行中依次輸出 Q 和 R,中間以 1 空格分隔。
輸入樣例:
123456789050987654321 7
輸出樣例:
17636684150141093474 3
程式碼:
#include <iostream> using namespace std; int main(){ string A,Q; int B,R=0; cin >>A>>B; int length = A.length(); int temp = A[0]-'0'; //初始化為A的第一個值 if(temp>=B){ //判斷A的第一個字元是否大於B Q.push_back(temp/B+'0'); } for(int i=1;i<length;i++){ R = temp%B; temp = R*10+(A[i]-'0'); Q.push_back(temp/B+'0'); } R = temp%B; if(length ==1 && (A[0]-'0')<B){ //當A只有一位數且比B小 cout << "0 "<<A[0]-'0'; }else{ cout <<Q<<" "<<R; } }
總結:
- A太大用字串儲存,模擬手算除法的步驟