【PAT乙級】1017 A除以B
問題描述
本題要求計算 A/B,其中 A 是不超過 1000 位的正整數,B 是 1 位正整數。你需要輸出商數 Q 和餘數 R,使得 A=B×Q+R 成立。
輸入格式
輸入在一行中依次給出 A 和 B,中間以 1 空格分隔。
輸出格式
在一行中依次輸出 Q 和 R,中間以 1 空格分隔。
樣例輸入
123456789050987654321 7
樣例輸出
17636684150141093474 3
分析
容易漏考慮 A<B 的情況
C++程式碼
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<char>c,q;
char ch;
while(~scanf("%c",&ch)){
if(ch==' ') break;
c.push_back(ch);
}
int b;
cin>>b;
int r;
//易漏考慮的情況:
if(c.size()==1&&c[0]-'0'<b){
cout<<0<<" "<<c[0]-'0';
return 0;
}
while(!c.empty()){
int a=c[0]-'0';
c.erase(c.begin());
if(c.empty()){
r=a;
break;
}
a=a*10+(c[0]-'0');
r=a%b;
cout<<a/b;
c[0]=r+'0';
}
cout<<" ";
cout<<r;
return 0;
}
備註
一開始寫的是這個樣子,但是總是執行超時
vector<char>c,q;
while(true){
char ch;
cin>>ch;
if(ch==' ') break;
c.push_back(ch);
}
int b;
cin>>b;
改成這個就好了
vector<char>c,q;
char ch;
while(~scanf("%c",&ch)){
if(ch==' ') break;
c.push_back(ch);
}
int b;
cin>>b;
相關文章
- PAT-B 1017 A除以B【模擬 大數除法】
- PAT 乙級
- PAT乙級1023
- 【PAT乙級】1027 列印沙漏
- 【PAT乙級】1065 單身狗
- 【PAT乙級】1052 賣個萌
- 【PAT乙級】1048 數字加密加密
- 【PAT乙級】1066 影像過濾
- 【PAT乙級】1021 個位數統計
- PAT乙級——1093(字串匹配)Java實現字串匹配Java
- PAT乙級 | 1086 就不告訴你 (15分)
- PAT乙級比賽-互評成績計算
- PAT 乙級 1094 谷歌的招聘 (20分)---【素數 字串】谷歌字串
- 【PAT乙級、C++】1024 科學計數法 (20分)C++
- PAT乙級——1092(陣列排序 自定義sort)Java實現陣列排序Java
- pat乙級自我回顧:一般錯誤出現原因
- PAT 2023 冬 乙 方格填數
- L1-037 A除以B 分數 10
- PAT乙級1004 成績排名 (20分)(C語言版)及解析C語言
- [PAT B] 1011 A+B 和 C
- PAT-B 1016 部分A+B
- PAT-B 1046 划拳
- PAT-B 1093 字串A+B 【集合】字串
- PAT-B 1011 A+B 和 C
- PAT-B 1085 PAT單位排行【模擬】
- [PAT B] 1009 說反話
- [PAT B] 1004 成績排名
- PAT-B1020 月餅
- [#181024][PAT Practice] A+B FormatORM
- PAT-B 1064 朋友數
- 2022年冬pat乙級考試題目及程式碼解析附部分錯誤原因
- PAT乙級1026程式執行時間(秒數轉換為時間)(值得學習)
- PAT乙級1001 || 害死人不償命的(3n+1)猜想(C語言)C語言
- 【PAT甲級A1065】A+B and C (64bit) (20分)(c++)C++
- [PAT B] 1012 數字分類
- [PAT B] 1007 素數對猜想
- PAT:1001 A+B Format (20分)ORM
- PAT-B 1043 輸出PATest