zoukankan      html  css  js  c++  java
  • bzoj 2656 [Zjoi2012]数列(sequence) 递推+高精度

    2656: [Zjoi2012]数列(sequence)

    Time Limit: 2 Sec  Memory Limit: 128 MB
    [Submit][Status][Discuss]

    Description

       小白和小蓝在一起上数学课,下课后老师留了一道作业,求下面这个数列的通项公式:

       小白作为一个数学爱好者,很快就计算出了这个数列的通项公式。于是,小白告诉小蓝自己已经做出来了,但为了防止小蓝抄作业,小白并不想把公式公布出来。于是小白为了向小蓝证明自己的确做出来了此题以达到其炫耀的目的,想出了一个绝妙的方法:即让小蓝说一个正整数N,小白则说出 的值,如果当N很大时小白仍能很快的说出正确答案,这就说明小白的确得到了公式。但这个方法有一个很大的漏洞:小蓝自己不会做,没法验证小白的答案是否正确。作为小蓝的好友,你能帮帮小蓝吗?

    Input

          输入文件第一行有且只有一个正整数T,表示测试数据的组数。

         第2~T+1行,每行一个非负整数N。

    Output

          输出文件共包含T行。

    第i行应包含一个不含多余前缀0的数,它的值应等于An(n为输入数据中第i+1行被读入的整数)

    【样例输入】

    Sample Input

    3

    1

    3

    10

    Sample Output

    1
    2
    3


    HINT

    T<=20,N<=10^100

    思路:每次记录(x,x+1)两个数的值;

       每次可以转化成(2x,2x+1)或者(2x+1,2x+2);

       复杂度logn;java写法;

    import java.util.*;
    import java.math.*;
    
    public class Main {
        public static void main(String[] args) {
            Scanner cin = new Scanner(System.in);
            int n;
            n=cin.nextInt();
            for(int i=0;i<n;i++)
            {
                BigInteger[] a=new BigInteger[10010];
                BigInteger x=cin.nextBigInteger();
                BigInteger two=new BigInteger("2");
                BigInteger one=new BigInteger("1");
                int flag=0;
                while(x.equals(one)==false)
                {
                    a[flag++]=x;
                    x=x.divide(two);
                }
                BigInteger index=one;
                BigInteger pre=one;
                BigInteger nex=one;
                for(int j=flag-1;j>=0;j--)
                {
                    if(a[j].equals(index.multiply(two)))
                    {
                        nex=pre.add(nex);
                    }
                    else 
                    {
                        pre=pre.add(nex);
                    }
                    index=a[j];
                }
                System.out.println(pre);
            }
        }
    }
  • 相关阅读:
    [自创]mootools所有复选框只能选择一个的功能
    tomcat设置https访问
    更改tomcat运行时标题
    Java日期操作: 查找星期一和星期天
    mysql 常用数据查询
    git pull代码冲突
    antd model form数据不刷新问题
    前端开发常见面试题
    whistle 使用步骤
    windows 环境 启动报错 '.inconfig' 不是内部或外部命令,也不是可运行的程序
  • 原文地址:https://www.cnblogs.com/jhz033/p/5928887.html
Copyright © 2011-2022 走看看