题目

思路
提到了进制,就应该在进制上面思考,可以发现,序号写成2进制的形式时,以k进制形式读出,正好对应得到数据。不过这是什么原理呢?有点不太明白,具体代码就很好写了。如下:
import java.util.Scanner;
public class ALGO_33 {
//给定一个正整数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。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int k = scanner.nextInt();
int N = scanner.nextInt();
int ans = 0;
int base = 1;
String str = Integer.toString(N,2);
char[] sNum = str.toCharArray();
for (int i=sNum.length-1;i>=0;i--){
if (sNum[i]=='1')
ans += base;
base *= k;
}
System.out.println(ans);
}
}
排列问题
一开始是思考的排列,利用回溯进行作答。
发现回溯方法相关有不会的地方。
这篇博客探讨了一种利用二进制表示解决数列问题的方法,特别是针对给定k的方幂序列。通过将序号转化为2进制并按k的进制读取,可以有效地计算出序列的第N项。同时,文章也提及了在排列问题中尝试使用回溯法,虽然作者在回溯法的应用上遇到了困难。代码示例展示了如何用Java实现数列问题的解决方案。
516

被折叠的 条评论
为什么被折叠?



