数列 pascal任青网第四题数列给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是:1,3,4,9,10,12,13,…(该序列实际上就是

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/01 18:18:20
数列 pascal任青网第四题数列给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是:1,3,4,9,10,12,13,…(该序列实际上就是

数列 pascal任青网第四题数列给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是:1,3,4,9,10,12,13,…(该序列实际上就是
数列 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*10^9).(整数前不要有空格和其他符号).
样例输入
3 100
样例输出
981
我的程序:
var
i,k,c,j,q,sum:integer;
s:string;
ans:longint
a:array[0..maxint]of int64;
begin
readln(q,c);
k:=1;
while c 0 do
begin
j:=c mod 2;
if j=1 then s[k]:='1';
if j=0 then s[k]:='0';
c:=c div 2;
inc(k);
end;
j:=0;
fillchar(a,sizeof(a),0);ans:=0;
for i:=k-1 downto 1 do
begin
inc(j);
if s[i]='1' then begin
a[i]:=q;
for sum:=2 to i-1 do a[i]:=a[i]*q;
ans:=ans+a[i];
end;
end;
writeln(ans);
end.
状态:Unaccepted
测评机:Xeond[6]
得分:90分
提交日期:2012-2-29 18:42:00
有效耗时:1453毫秒
测试结果1:通过本测试点|有效耗时172ms
测试结果2:通过本测试点|有效耗时172ms
测试结果3:通过本测试点|有效耗时156ms
测试结果4:测试结果错误.错误结果为:153358928
正确结果应为:153358921
测试结果5:通过本测试点|有效耗时156ms
测试结果6:通过本测试点|有效耗时157ms
测试结果7:通过本测试点|有效耗时172ms
测试结果8:通过本测试点|有效耗时156ms
测试结果9:通过本测试点|有效耗时156ms
测试结果10:通过本测试点|有效耗时156ms
求教我的程序问题出在哪了?

数列 pascal任青网第四题数列给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是:1,3,4,9,10,12,13,…(该序列实际上就是
你难道没有找到规律吗?
建立一个数组
初始化先放入n^0 然后放入 n^1
放入n^0+n^1,n^2,n^2+n^0,n^2+n^1,n^2+n^0+n^1,n^3……
也就是每放入一个新的n的方幂之后就将新的方幂与数组中前面的所有的数都与这个新的方幂加和
放到下一个里面
懂了吗?
代码实现应该很简单吧!
另外还有一个转换进制的做法 但是没有上面这个方法好想,我看你就是用的这个方法吧
这个方法如果有一点细节的地方没有处理好的话就会出错的
所以你还是按照我教你的方法在写一个 试试吧