洛谷1062 數列 解題報告

2022-05-06 05:36:06 字數 1644 閱讀 6989

給定乙個正整數k(3≤k≤15),把所有k的方冪及所有有限個互不相等的k的方冪之和構成乙個遞增的序列,例如,當k=3時,這個序列是:

1,3,4,9,10,12,13,…

(該序列實際上就是:3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2,3^0+3^1+3^2,…)

請你求出這個序列的第n項的值(用10進製數表示)。

例如,對於k=3,n=100,正確答案應該是981。

輸入格式:

輸入檔案只有1行,為2個正整數,用乙個空格隔開:

k n(k、n的含義與上述的問題描述一致,且3≤k≤15,10≤n≤1000)。

輸出格式:

輸出檔案為計算結果,是乙個正整數(在所有的測試資料中,結果均不超過2.1*109)。(整數前不要有空格和其他符號)。

輸入樣例#1:

3 100
輸出樣例#1:

981
noip 2006 普及組 第四題

模擬/列舉

這道題有兩種解法。

1.標準解法是轉換為二進位制(方法很巧妙,**也很簡單)。

以樣例為例:1,3,4,9,10,12,13,…

可以寫成: 0001

有興趣的同學可以嘗試,在這裡就不作深究。

2.筆者採用了一種**較為冗長的列舉方法,不過方法還是很巧妙的,思路也很清晰,比較容易接受。

以樣例為例:3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2,3^0+3^1+3^2,…

可以看作:從0開始列舉n(n為k的對數),先將k^n加入數列,再與數列中位於它前面的每乙個元素分別相加,再將各個和依次加入數列。

當數列中的第n項含有元素後將其輸出即可。

下面附上**。

program sequence;  

var  

k,n,c,d,e,i,j:longint;  

t:boolean;  

a:array[1..1000] of longint;  

begin  

readln(k,n);  

a[1]:=1;  

c:=1;  

d:=0;  

e:=0;  

i:=2;  

t:=true;  

while i1 do  

begin  

if t then  

begin  

a[i]:=round(exp(c*ln(k)));  

d:=a[i];  

e:=i;  

inc(c);  

inc(i);  

t:=false;  

end  

else  

begin  

for j:=1 to e-1 do  

begin  

a[i]:=d+a[j];  

inc(i);  

if i>1000 then break;  

end;  

t:=true;  

end;  

end;  

writeln(a[n]);  

end.  

洛谷p1062 數列

給定乙個正整數k 3 k 15 把所有k的方冪及所有有限個互不相等的k的方冪之和構成乙個遞增的序列,例如,當k 3時,這個序列是 1,3,4,9,10,12,13,該序列實際上就是 3 0,3 1,3 0 3 1,3 2,3 0 3 2,3 1 3 2,3 0 3 1 3 2,請你求出這個序列的第n...

洛谷P1062(數列)

題目 給定乙個正整數k 3 k 15 把所有k的方冪及所有有限個互不相等的k的方冪之和構成乙個遞增的序列,例如,當k 3時,這個序列是 1,3,4,9,10,12,13,即3 0,3 1,3 0 3 1 3 2,3 0 3 2,3 1 3 2,3 0 3 1 3 2 請你求出這個序列的第n項的值 用...

洛谷 P1062 數列

給定乙個正整數k 3 k 15 把所有k的方冪及所有有限個互不相等的k的方冪之和構成乙個遞增的序列,例如,當k 3時,這個序列是 1,3,4,9,10,12,13,該序列實際上就是 3 0,3 1,3 0 3 1,3 2,3 0 3 2,3 1 3 2,3 0 3 1 3 2,請你求出這個序列的第n...