2 a1394393468 a1394393468 于 2016.03.01 19:39 提问

JAVA算法训练 数列给定一个正整数k(3≤k≤15)

------------------题目-------------------------------------------------------
给定一个正整数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。

感觉看不懂题目序列的规律(把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列) ,然后上百度给的答案是要转2进制再求,求大神解惑。新人币不多 

---------------代码------------------------------
public static void main (String args[])throws IOException{
long a[]=new long[1001];
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
String s[]=bf.readLine().split(" ");
int k=Integer.parseInt(s[0]);
int n=Integer.parseInt(s[1]);
int m=1;
int sum=0;
while(n>0){
a[m++]=n%2;
n=n/2;
}
m--;
for(int i=1;i<=m;i++){
sum+=a[i]*add(k,i-1);
System.out.println(a[i]+" "+add(k,i-1)+" "+sum);
}
System.out.println(sum);
}
static int add(int k,int n){
int sum=1;
for(int i=1;i<=n;i++)
sum*=k;
return sum;
}
}
-------------------运行结果------------------------------
3 100
0 1 0
0 3 0
1 9 9
0 27 9
0 81 9
1 243 252
1 729 981
981

1个回答

caozhy
caozhy   Ds   Rxr 2016.03.01 20:05
已采纳

本来就是转换成二进制来做。
假设二进制的每一位表示 (N-1)^对应位数 是否包含在和中。
比如
当k=3时
0001表示3^0存在
0010表示3^1存在
0011表示3^0和3^1存在
0100表示3^2存在
0101表示3^2和3^0存在
...
这个序列也就是1 2 3 4 5...的二进制表示
所以从1~N输出下就可以了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
蓝桥杯 算法训练 数列
算法训练 数列   时间限制:1.0s   内存限制:256.0MB        问题描述   给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是:   1,3,4,9,10,12,13,…   (该序列实际上就是:30,31,30+31,32,30+32,31+32,30+31+
次方数列
问题 : 次方数列时间限制: 1 Sec 内存限制: 128 MB题目描述 给定一个正整数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,…) 请你求出这个序列
NOIP2006数列(sequence)
<br /><br />数列<br />(sequence.pas/c/cpp)<br />【问题描述】<br />给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是:<br />1,3,4,9,10,12,13,…<br />(该序列实际上就是:30,31,30+31,32,30+32,31+32,30+31+32,…)<br />请你求出这个序列的第N项的值(用10进制数表示)。<br />例如,对于k=3,N=100,正确
NOIP2006数列 题解
题目描述给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,… (该序列实际上就是:30,31,30+31,32,30+32,31+32,30+31+32,…) 请你求出这个序列的第N项的值(用10进制数表示)。 例如,对于k=3,N=100,正确答案应该是981。输入输入文件
NOIP2006(4)数列
背景 noip2006普及第4题. 描述 给定一个正整数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项的值
(蓝桥杯) 算法训练 sign函数
问题描述  给定实数x,输出sign(x)的值。  sign(x)是符号函数,如果x&amp;gt;0,则返回1;如果x=0,则返回0;如果x&amp;lt;0,则返回-1。输入格式  一行一个实数x。输出格式  一行一个整数表示答案。样例输入-0.0001样例输出-1数据规模和约定  |x|&amp;lt;=10000,输入数据精度最多达到4位小数。提示  判断实数x是否等于零时,由于计算机实数运算误差,应当引入极小量...
[NOIP普及组2006第四题]数列
数列 【问题描述】 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,… (该序列实际上就是:30,31,30+31,32,30+32,31+32,30+31+32,…) 请你求出这个序列的第N项的值(用10进制数表示)。 例如,对于k=3,N=100,正确答案应该...
方幂之和构成一个递增的序列
给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列, 例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,” (该序列实际上就是:30,31,30+31,32,30+32,31+32,30+31+32,”) 请你求出这个序列的第N项的值(用10进制数表示)。 例如,对于k=3,N=100,正确答案应该是981。 每个测试数据
PTA5-19 求链式线性表的倒数第K项
5-19 求链式线性表的倒数第K项   (20分) 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。 输入格式: 输入首先给出一个正整数K,随后是若干正整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。 输出格式: 输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL。 输入样例: 4 1 2 3 4 5 6
给定长度为n的整数数列:a0,a1,..,an-1,以及整数S。这个数列会有连续的子序列的整数总和大于S的,求这些数列中,最小的长度。
给定长度为n的整数数列:a0,a1,..,an-1,以及整数S。这个数列会有连续的子序列的整数总和大于S的,求这些数列中,最小的长度。 #include using namespace std; int min_seri_len(int *a, int n, int S){ int i = 0; int j = 0; int min_len = 0; int * sum