数列 pascal任青网第四题数列给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/17 12:46:50
数列 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
求教我的程序问题出在哪了?
任青网第四题数列
给定一个正整数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
求教我的程序问题出在哪了?
你难道没有找到规律吗?
建立一个数组
初始化先放入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的方幂之后就将新的方幂与数组中前面的所有的数都与这个新的方幂加和
放到下一个里面
懂了吗?
代码实现应该很简单吧!
另外还有一个转换进制的做法 但是没有上面这个方法好想,我看你就是用的这个方法吧
这个方法如果有一点细节的地方没有处理好的话就会出错的
所以你还是按照我教你的方法在写一个 试试吧
再问: 这个题的规律不就是 以q为底数的数列 其中第K项的值就是将K转化为K的二进制形式 然后换成“三进制”形式么 比如以3为底数的数列第100项 那么将100化为2进制就是1100100 (1100100)B=2^6+2^5+2^2=(100)D 第100项就是3^6+3^5+3^2=981 我想知道我这个程序问题出在哪里,或者给出一个用此思路写的程序,最好带上注释…… 你说的第一种方法太麻烦了······
再答: 额 我的是最容易发现也最容易理解的好不好! 这道题当然是进制转换才最简单 但不容易理解 我给你发一个我写的吧 var k,n,r:longint; ans,x:int64;//数据要求 begin readln(k,n); ans:=0;x:=1;//初始化 while n>0 do //转换二进制 begin r:=n mod 2; n:=n div 2; ans:=ans+r*x; x:=x*k; end; writeln(ans); end. 这回满意了吧......
建立一个数组
初始化先放入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的方幂之后就将新的方幂与数组中前面的所有的数都与这个新的方幂加和
放到下一个里面
懂了吗?
代码实现应该很简单吧!
另外还有一个转换进制的做法 但是没有上面这个方法好想,我看你就是用的这个方法吧
这个方法如果有一点细节的地方没有处理好的话就会出错的
所以你还是按照我教你的方法在写一个 试试吧
再问: 这个题的规律不就是 以q为底数的数列 其中第K项的值就是将K转化为K的二进制形式 然后换成“三进制”形式么 比如以3为底数的数列第100项 那么将100化为2进制就是1100100 (1100100)B=2^6+2^5+2^2=(100)D 第100项就是3^6+3^5+3^2=981 我想知道我这个程序问题出在哪里,或者给出一个用此思路写的程序,最好带上注释…… 你说的第一种方法太麻烦了······
再答: 额 我的是最容易发现也最容易理解的好不好! 这道题当然是进制转换才最简单 但不容易理解 我给你发一个我写的吧 var k,n,r:longint; ans,x:int64;//数据要求 begin readln(k,n); ans:=0;x:=1;//初始化 while n>0 do //转换二进制 begin r:=n mod 2; n:=n div 2; ans:=ans+r*x; x:=x*k; end; writeln(ans); end. 这回满意了吧......
数列 pascal任青网第四题数列给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成
C语言:数列的移动给定一个长度为N的连续数列,给M次操作,每次操作给定一个数K,要求把当前数列中的第K个数移动到数列最前
1^k+2^k+3^k+4^k+5^k.+n^k数列和公式的推导
设关于的二次方程(k方-6k+8)x方+(2k方-6k-4)x+k=4的两根都是整数,求满足条件的所有实数k的值
把数列{1/2n}中的所有数按照从大到小,左大右小的原则写成如图所示的数阵,第k行有2^(k-1)个数,若第k行的第s个
数列1,2,2,3,3,3,…,k,k,…,k,…(k个k)的通项公式为
数列与不等式证明1题设n为给定的正整数,数列a(0),a(1),...,a(n)定义为a(0)=0.5,a(k)=a(k
证明对于所有正整数k,总有一个7的n次方,7^n=#####00000(k个0)1 (#号)代表任意数字
已知数列{an}只有4项,且各项互不相同,各项都是集合{1,2,3,4}中的元素,若共可组成K个符合条件的不同数列,则K
一个数列{an}各项是1或3,首项为1,且在第k个1和第k+1个1之间有2k-1个3,数列的前n项和为Sn.
将2008表示为k(k是一个正整数)个完全平方数之和 求k的最小值 怎么证明呢?
已知关于x的方程x方-2(k-3)x+k方-4k-1=0