數列求和 加強版 陣列

2021-10-10 03:57:56 字數 1530 閱讀 2132

問題描述

給定某數字a(1≤a≤9)以及非負整數(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錯誤**:

#include

using

namespace std;

#include

#include

#include

//先將各項表示出來

#define max 1000000

intmain()

}}while

(nums[k]

>=10)

if(nums[k]==0

&&k!=1)

for(

int i=k;i>=

1;i--

)}

問題分析:

數字很大,所以一定用陣列儲存

此**在修改前未考慮n為0的情況,導致測試點2未通過

這個演算法的時間複雜度是o(n^2)當n、a取最大,測試點三未通過

將加法改為乘法後測試點1一直不通過,不清楚原因

#include

using

namespace std;

#include

#include

#include

//先將各項表示出來

#define max 1000000

intmain()

}// n = 0;

if(k==-1

)while

(n!=0)

for(

int i=k;i>=

0;i--

)}

總結

相乘更快,尋找規律

這裡位數最多為n+1所以不用設定那麼多空間

n久以後寫的修改版

ac**:

#include

using

namespace std;

#define ll long long

ll res[

100010];

intmain()

for(

int i=n;i>

0;i--

)for

(int i=

1;i<=n;i++

)int k = n;

while

(res[k+1]

!=0)for

(int i=k;i>

0;i--

)}

數列求和 加強版 PAT

原題如下 給定某數字a a 1 le a le 91 a 9 以及非負整數n n 0 le n le 1000000 n 10 0000 求數列之和s a aa aaa cdots aa cdots as a aa aaa a a a n n個aa 例如a 1a 1,n 3n 3時,s 1 11 1...

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 的範圍,...