演算法學習之路|A除以B
本題要求計算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<queue>//後進前出
#include<string>
using namespace std;
int main(){
string a;
int b;
cin>>a>>b;
queue<int> qa;
for(int i=0;i<a.length();i++){//把字串轉化成int存入佇列中
qa.push(int(a[i]-48));
}
if(qa.size()==1&&qa.front()<b){//例如輸入1 2後返回 0 1 如此
cout<<0;
}
while(!qa.empty()){
int tmp=qa.front();//取第一位數
if(tmp>=b){//當第一位數>除數時,輸出結果,並把餘數替換掉第一位數
cout<<tmp/b;
qa.front()=tmp%b;
}
else if (tmp<b){//當第一位數<除數時
if(qa.size()==1){//這時候,剩下的數應該是最終餘數
cout<<" "<<qa.front();
break;
}
else{//取前兩位/除數 並把餘數替換掉這兩位
int tmp2=10*tmp;
qa.pop();
tmp2+=qa.front();
cout<<tmp2/b;
qa.front()=tmp2%b;
}
}
}
}
相關文章
- 演算法學習之路|D進位制的A+B演算法
- 演算法學習之路|划拳演算法
- 演算法學習之路|列印排名演算法
- 演算法學習之路|方格分割演算法
- 演算法學習之路|朋友數演算法
- 演算法學習之路|SpellItRight演算法
- 演算法學習之路|歐幾里得遊戲演算法遊戲
- 演算法學習之路|月餅演算法
- 演算法學習之路|PATRanking演算法
- 演算法學習之路|列印沙漏演算法
- 演算法學習之路|快速排序演算法排序
- 演算法學習之路|結繩演算法
- 演算法學習之路|數零壹演算法
- 演算法學習之路|開學寄語演算法
- 演算法學習之路|說反話演算法
- 演算法學習之路|幼兒園買玩具演算法
- 演算法學習之路|小賭怡情演算法
- 演算法學習之路|影像過濾演算法
- 演算法學習之路|日期問題演算法
- 演算法學習之路|賣個萌演算法
- 演算法學習之路|螺旋矩陣演算法矩陣
- 演算法學習之路|選擇題演算法
- 演算法學習之路|字元統計演算法字元
- 演算法學習之路|科學計數法演算法
- L1-037 A除以B 分數 10
- 演算法學習之路|PlayOnWords(尤拉道路+dfs)演算法
- 演算法學習之路|舊鍵盤打字演算法
- 演算法學習之路|最簡分數演算法
- 演算法學習之路|檢驗身份證演算法
- 演算法學習之路|愛丁頓數演算法
- 演算法學習之路|最小生成樹——prime演算法演算法
- 強化學習之路一 QLearning 演算法強化學習演算法
- 演算法學習之路|個位數統計演算法
- 演算法學習之路|狀態壓縮dp演算法
- 演算法學習之路|棋盤問題(博弈)演算法
- 演算法學習之路|進位制轉換演算法
- 演算法學習之路|宇宙無敵加法器演算法
- 演算法學習之路|四平方和演算法