PTA習題 7 38 數列求和 加強版 20分

2021-10-05 11:37:38 字數 774 閱讀 6599

給定某數字a(1≤a≤9)以及非負整數n(0≤n≤100000),求數列之和s=a+aa+aaa+⋯+aa⋯a(n個a)。例如a=1, n=3時,s=1+11+111=123。

輸入數字a與非負整數n。

輸出其n項數列之和s的值。

1 3
123
基本思路:

1、因為最大位數可能為十萬位,因此用陣列解決;

2、可以用乙個陣列先儲存所要加的數,另乙個陣列儲存運算結果,但是為了簡潔,乙個陣列即可。

3、剛開始的思想是從陣列第一位開始依次迴圈,每次迴圈都在當前位置以及當前位加上乙個a,因此要用雙重迴圈,但是這樣會使執行超時,測試點3通不過。後來換了一種思想,讓每一位上的數一次性加完,就好像豎式加法,從個位計算起,第i位即為(n-i)個a相加,然後再進製,取餘,這樣只需要一次迴圈即可完成。

4、這種一直加到n個a的加法,和的最大位數為(n+1),因此在倒序輸出結果時,先判斷(n+1)位是否為0,若不為0,則直接輸出。然後依次倒序輸出前n位即可

5、還要注意n為0的特殊情況,此時輸出為0;

**如下:

#includeint main()

; //結果儲存在陣列中

int i,j;

for(i=0;i=10)

}if(res[n]!=0)

for(i=n-1;i>=0;i--)

if(n==0)

return 0;

}

7 38 數列求和 加強版

給定某數字a 1 a 9 以及非負整數n 0 n 100000 求數列之和s a aa aaa aa a n個a 例如a 1,n 3時,s 1 11 111 123。輸入數字a與非負整數n。輸出其n項數列之和s的值。1 3123最近這些天一直在玩,沒怎麼寫 看到這題直覺就是像以前一樣開闢字元陣列,昨...

7 38 數列求和 加強版

給定某數字a 1 a 9 以及非負整數n 0 n 100000 求數列之和s a aa aaa aa a n個a 例如a 1,n 3時,s 1 11 111 123。輸入數字a與非負整數n。輸出其n項數列之和s的值。如果這道題按數學中的四則運算去直接計算結果,該資料會超出long long 的範圍,...

7 38 數列求和 加強版

7 38 數列求和 加強版 20 分 給定某數字a 1 a 9 以及非負整數n 0 n 100000 求數列之和s a aa aaa aa a n個a 例如a 1,n 3時,s 1 11 111 123。輸入數字a與非負整數n。輸出其n項數列之和s的值。1 3123 思路 直接用長整形累加 簡單,但...