1017 A除以B
阿新 • • 發佈:2018-12-09
本題要求計算 A/B,其中 A 是不超過 1000 位的正整數,B 是 1 位正整數。你需要輸出商數 Q 和餘數 R,使得 A=B×Q+R 成立。
輸入格式:
輸入在一行中依次給出 A 和 B,中間以 1 空格分隔。
輸出格式:
在一行中依次輸出 Q 和 R,中間以 1 空格分隔。
輸入樣例:
123456789050987654321 7
輸出樣例:
17636684150141093474 3
分析:
A是不超過一千位的正整數,這裡顯然要用字串儲存了。而字串儲存的是ASCII碼,要算除法,必然要把字元轉換成整型。要怎麼解決這個問題,我們很自然地會想到模擬日常生活中筆算的過程。方法還是蠻簡單的,看程式碼自然就懂了。這裡有兩個需要注意的地方,一是商的第一位不能輸出0,我們會給他新增if(i != 0)的限制,可是還有一點,就是商只有1位的時候,如果是0就需要輸出了。所以思維要嚴謹!
#include<iostream> using namespace std; int main(){ string A; int B, remainder = 0; cin >> A >> B; for(int i = 0; i < A.length(); i++){ remainder = remainder * 10 + A[i] - '0'; if(remainder >= B){ cout << remainder / B; remainder %= B; }else{ if(i != 0 || A.length() == 1) cout << '0'; } } cout << ' ' << remainder; }