作业帮 > 综合 > 作业

pascal编程:数列

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/05/28 12:37:06
pascal编程:数列
题目描述
给定一个正整数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).(整数前不要有空格和其他符号).
样例输入
3 100
样例输出
981
pascal编程:数列
// 把n变为2进制数
// 由低往高数位置,最低位为第0位
// 若第i位为1,就将 k^i 累加到ans
// 例如n是6,二进制数为:110,所以结果为 k^1+k^2
var
k,n,ans:longint;
i,t:longint;
begin
assign(input,'an.in'); reset(input);
assign(output,'an.out'); rewrite(output);
readln(k,n);
ans:=0; i:=0; t:=1;
while n>0 do begin
if n mod 2=1 then ans:=ans+t;
n:=n div 2;
i:=i+1;
if n>0 then t:=t*k;
end;
writeln(ans);
close(input); close(output);
end.