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