ALGO_23数列

这篇博客探讨了一种利用二进制表示解决数列问题的方法,特别是针对给定k的方幂序列。通过将序号转化为2进制并按k的进制读取,可以有效地计算出序列的第N项。同时,文章也提及了在排列问题中尝试使用回溯法,虽然作者在回溯法的应用上遇到了困难。代码示例展示了如何用Java实现数列问题的解决方案。

ALGO_23数列

题目

在这里插入图片描述

思路

提到了进制,就应该在进制上面思考,可以发现,序号写成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);
    }
}

排列问题

一开始是思考的排列,利用回溯进行作答。
发现回溯方法相关有不会的地方。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值