1017 A除以B (20 分)

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

輸入格式:

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

輸出格式:

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

輸入樣例:

123456789050987654321 7

輸出樣例:




這道題目屬於模擬題,模擬除法的過程,這個模擬自己比較簡單,可是咱們須要注意幾個細節
一、題目給定的A是不超過1000位的正整數,B是一位整數。這個條件就決定了咱們處理A的時候要按照字符串處理
二、當部分餘數小於除數的時候,會有商0的可能。在最後咱們須要去除前導0。

17636684150141093474 3
#include <bits/stdc++.h>
using namespace std; string A,Q; int main() { int B,R; R=0;Q=""; cin>>A>>B; int len=A.length(); int i=0; int tempQ=0; while(i<len) { R*=10; R+=A[i]-'0';    //獲得部分餘數 tempQ=R/B;     //獲得當前的商 R=R%B; Q+=tempQ+'0'; i++; } for(int i=0;i<Q.length();)  //去除前導0 { if(Q[i]!='0') break; else Q.erase(Q.begin()+i); } if(Q=="") Q+='0'; cout<<Q<<" "<<R<<endl; return 0; }

 

字符串的刪除操做不熟悉,str.erase(i)表示刪除字符串從i處開始到end的字符串。而str.erase(str.bigin()+i)表示刪除單個字符
相關文章
相關標籤/搜索