zoukankan      html  css  js  c++  java
  • 2021寒假每日一题《数列》

    数列

    题目来源:NOIP2006普及组
    时间限制:(1000ms) 内存限制:(64mb)

    题目描述

    给定一个正整数 (k) ,把所有 (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行,为 (k)(N) 两个正整数,用一个空格隔开。

    输出格式

    输出一个正整数为计算结果(在所有的测试数据中,结果均不超过 (2.1∗10^9) )。
    (整数前不要有空格和其他符号)。

    数据范围

    (3 ≤ k ≤ 15) ,
    (10 ≤ N ≤ 1000)

    样例输入

    3 100
    

    样例输出

    981
    

    解题思路

    继续延长题目给出的串为 (3^3,3^0+3^3,3^1+3^3,3^0+3^1+3^3,3^2+3^3,3^0+3^2+3^3,3^1+3^2+3^3,3^0+3^1+3^2+3^3,…)
    即: (3,03,13,013,23,023,123,0123,…)
    规律并不是按多项式的项数来排列的,所以无法用排列数算出具体的项数。

    第一个思路:

    3的次方上面观察规律,即对 (0,1,01,2,02,12,012,…) 观察。
    因为每一个次方的数在一项中仅出现一次,用二进制从右往左看,第几位有则第几位为1,其它位为0,比如第一项是 (0),看成二进制从右往左第0位为1,即二进制的 (1) ;第二项是 (1) ,看成二进制从右往左第1位为1,即二进制的 (10)
    所以上面的串可以转换为 (1,10,11,100,101,110,111,…)
    然后发现这段就是二进制的 (1,2,3,4,5,6,7,…)
    所以第100项为:(1100100),即 (2,5,6) ,所以答案为 (3^2+3^5+3^6=981)

    第二个思路:

    观察数列 (1,3,4,9,10,12,13,…) 发现:
    其用三进制的表示为 (1,10,11,100,101,110,111,…)
    然后发现这段就是二进制的 (1,2,3,4,5,6,7,…)
    由此得到题解,将输入的 (N) 用二进制的形式表示出来,然后再将其用 (k) 进制展开转换为10进制。

    解题代码-Java

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            int k = input.nextInt();
            String n = Integer.toBinaryString(input.nextInt());
            input.close();
    
            int j = n.length() - 1;
            int ans = 0;
            for (char ch : n.toCharArray()) {
                if (ch == '1') {
                    ans += Math.pow(k, j);
                }
                j--;
            }
            System.out.println(ans);
        }
    }
    
  • 相关阅读:
    UVALive 7141 BombX
    CodeForces 722D Generating Sets
    CodeForces 722C Destroying Array
    CodeForces 721D Maxim and Array
    CodeForces 721C Journey
    CodeForces 415D Mashmokh and ACM
    CodeForces 718C Sasha and Array
    CodeForces 635C XOR Equation
    CodeForces 631D Messenger
    田忌赛马问题
  • 原文地址:https://www.cnblogs.com/hurentian/p/14380408.html
Copyright © 2011-2022 走看看