題目描述個人思路:題目背景的問題可以轉化為如下描述:
創(chuàng)新互聯(lián)建站于2013年開始,先為雁塔等服務建站,雁塔等地企業(yè),進行企業(yè)商務咨詢服務。為雁塔企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。給定兩個長度分別為?n,m?的整數(shù)?a,b,計算它們的和。
但是要注意的是,這里的?a,b?采用了某種特殊的進制表示法。最終的結果也會采用該種表示法。具體而言,從低位往高位數(shù)起,第?i位采用的是?i+1?進制。換言之,相較于十進制下每一位的「逢?10進?1」,該種進制下第?i?位是「逢?i+1?進?1」。
下圖所示,左邊是十進制的豎式加法;右邊是這種特殊進制的豎式加法。圖中的紅色加號表示上一位發(fā)生了進位。
輸入格式
輸出格式
- 第一行有兩個整數(shù)?n,m,分別表示?a和?b的位數(shù)。
- 第二行有?n?個整數(shù),中間用空格隔開,從高到低位描述?a?的每個數(shù)碼。
- 第三行有?m?個整數(shù),中間用空格隔開,從高到低位描述?b?的每個數(shù)碼。
輸入輸出樣例
- 輸出有若干個整數(shù),從高到低位輸出?a+b?在這種特殊表示法下的結果。
輸入
5 4 3 3 2 1 1 3 2 2 1輸出
4 2 1 1 0輸入?
10 1 10 9 8 7 6 5 4 3 2 1 0輸出?
10 9 8 7 6 5 4 3 2 1說明/提示對于全部數(shù)據(jù),保證?1≤n,m≤2×10^5,從低位往高位數(shù)起有ai?∈[0,i],bi?∈[0,i]。請使用 Java 或 Python 語言作答的選手注意輸入輸出時的效率。
2022.11.29個人優(yōu)化后的代碼:第一眼看見這個題目,腦子里想出來的就是高精度加法的模板。
但這個題很有意思,逢i+1進1,所以我們還需要在進位上做些文章。
2022.11.26個人的原代碼:??#include
#include #include using namespace std; int main() { int n,m; scanf("%d %d", &n, &m); deque a, b,c; for (int i = 0; i< n; i++) { int t; scanf("%d", &t); a.push_front(t); } for (int i = 0; i< m; i++) { int t; scanf("%d", &t); b.push_front(t); } int t = 0; int count = 2; for (int i = 0; i =0; i--) printf("%d ", c[i]); return 0; }
代碼分析:#include
#include #include using namespace std; int main() { int n,m; scanf("%d %d", &n, &m); deque a, b,c; for (int i = 0; i< n; i++) { int t; scanf("%d", &t); a.push_front(t); } for (int i = 0; i< m; i++) { int t; scanf("%d", &t); b.push_front(t); } if (n >m) { int t = 0; int count = 2; for (int i = 0; i =0; i--) printf("%d ", c[i]); return 0; }
我們來分析一下改進后的代碼: 一.數(shù)據(jù)的輸入:總結:int n,m; scanf("%d %d", &n, &m); deque
a, b,c; for (int i = 0; i< n; i++) { int t; scanf("%d", &t); a.push_front(t); } for (int i = 0; i< m; i++) { int t; scanf("%d", &t); b.push_front(t); } 輸入
5 4 3 3 2 1 1 3 2 2 11.考慮到數(shù)據(jù)范圍,我選擇用容器來存儲。
2.由于題目將n和m的每一位數(shù)都分開,用字符串string進行第一次存儲過于麻煩,所以我選擇直接用一個變量t進行第一次存儲,再將t頭插到deque容器。
3.為什么用deque容器?他能頭插,我也考慮過用vector尾插,但判斷條件的范圍把握不好,所以選擇deque進行頭插。
二:進位相加:int t = 0; int count = 2; //t用來存儲進位,count當做進制。 for (int i = 0; i
輸入
5 4 3 3 2 1 1 3 2 2 1這是t沒有多出的情況
來看看t多出的情況
?三:輸出數(shù)據(jù):
int len = c.size(); for (int i = len-1; i >=0; i--) printf("%d ", c[i]);
由于我是用尾插,將數(shù)據(jù)存入c容器中,所以輸出要倒著來,從容器的末尾開始輸出。
2022/11/29 12:18個人能力水平有限,比賽中只做出來AB兩題,文中若有錯誤,還請指出,如有疑問,歡迎留言。(比賽網(wǎng)站卡到讓人血怒,交半天交不上去)
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站欄目:第五屆“傳智杯”全國大學生計算機大賽初賽B題B-蓮子的機械動力學-創(chuàng)新互聯(lián)
本文地址:http://vcdvsql.cn/article34/cdicse.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、做網(wǎng)站、軟件開發(fā)、定制網(wǎng)站、服務器托管、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容