pat 乙级 1017 A除以B(C++)
生活随笔
收集整理的這篇文章主要介紹了
pat 乙级 1017 A除以B(C++)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
本題要求計算 A/B,其中 A 是不超過 1000 位的正整數,B 是 1 位正整數。你需要輸出商數 Q 和余數 R,使得 A=B×Q+R 成立。
輸入格式:
輸入在一行中依次給出 A 和 B,中間以 1 空格分隔。
輸出格式:
在一行中依次輸出 Q 和 R,中間以 1 空格分隔。
輸入樣例:
123456789050987654321 7
輸出樣例:
17636684150141093474 3
分析
- 被除數不超過1000位,范圍遠遠超過基本數據類型,需用字符數組或者string類型,此處選擇string類型,因為string類提供了很多方便又實用的函數
- 模擬除法,將余數和除數比較,如果余數>除數,做除法并分別取商和余數;如果余數<除數,商取0,余數=余數*10+下一位。
- 最后結果,商的第一位如果是0,要去掉0再輸出。
AC代碼
#include <iostream> #include <string> using namespace std; int main() {string A,Q;int i,len,B,R=0;cin>>A>>B;len=A.length();for(i=0;i<len;i++){R=10*R+(A[i]-'0');if(R<B){Q=Q+to_string(0);}else{Q=Q+to_string(R/B);R=R%B;}}if(Q[0]=='0'&&Q.length()!=1)Q=Q.substr(1);//將字符串從第2位到最后1位截取出來cout<<Q<<" "<<R;return 0; }如果有任何問題,歡迎評論區留言哦
總結
以上是生活随笔為你收集整理的pat 乙级 1017 A除以B(C++)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DDoS攻击工具(DDoS攻击工具箱)
- 下一篇: pat 乙级 1019 数字黑洞(C++