14行代码AC——1017 A除以B (20分)(大数运算+讲解)
生活随笔
收集整理的這篇文章主要介紹了
14行代码AC——1017 A除以B (20分)(大数运算+讲解)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
立志用更少的代碼做更高效的表達
Pat乙級最優化代碼+題解+分析匯總——>傳送門
本題要求計算 A/B,其中 A 是不超過 1000 位的正整數,B 是 1 位正整數。你需要輸出商數 Q 和余數 R,使得 A=B×Q+R 成立。
輸入格式:
輸入在一行中依次給出 A 和 B,中間以 1 空格分隔。
輸出格式:
在一行中依次輸出 Q 和 R,中間以 1 空格分隔。
輸入樣例:
123456789050987654321 7
輸出樣例:
17636684150141093474 3
模擬手算除法, 舉例:
123除以7, 先用12除以7得1, 將1存入字符串。
12%7=5, 則下一步就要用5*10+3去除以7, 等于7, 將7存入字符串。
余數4保存。 輸出即可。
注意: 本題采用了先計算后判定的方式, 也就是不管是否會產生前導零, 先將程序寫出來, 最后在輸出時將前導零忽略即可。
與此相反的方法是先判定后計算, 也就是設計一個巧妙的算法讓程序不保存前導零。
我更傾向于前一種算法, 因為代碼簡單易懂, 思維量小。
代碼展示
#include<bits/stdc++.h> using namespace std; int main() {string A, Q="";int B, R = 0;cin >> A >> B;for(char a : A) {R = R*10+a-'0';Q += R/B + '0';R %= B;}while(!Q.empty() && Q.front() == '0') Q.erase(Q.begin());//Q.c_str() 函數是 C語言的Printf輸出string的方法 printf("%s %d", Q.size()==0?"0":Q.c_str(),R); return 0; }每日一句
他日若遂凌云志,敢笑黃巢不丈夫。
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的14行代码AC——1017 A除以B (20分)(大数运算+讲解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10行代码AC——1016 部分A+B
- 下一篇: C语言满分代码:1018 锤子剪刀布 (