博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1041 Computer Transformation(高精度)
阅读量:6677 次
发布时间:2019-06-25

本文共 2734 字,大约阅读时间需要 9 分钟。

Computer Transformation

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 3845    Accepted Submission(s): 1420

Problem Description
A sequence consisting of one digit, the number 1 is initially written into a computer. At each successive time step, the computer simultaneously tranforms each digit 0 into the sequence 1 0 and each digit 1 into the sequence 0 1. So, after the first time step, the sequence 0 1 is obtained; after the second, the sequence 1 0 0 1, after the third, the sequence 0 1 1 0 1 0 0 1 and so on.
How many pairs of consequitive zeroes will appear in the sequence after n steps?
 

 

Input
Every input line contains one natural number n (0 < n ≤1000).
 

 

Output
For each input n print the number of consecutive zeroes pairs that will appear in the sequence after n steps.
 

 

Sample Input
2 3
 

 

Sample Output
1 1
 

 

Source
 

 

Recommend
JGShining
 
 
先找到规律,推公式。
1->01 ,  0->10
 
而且很容易知道连续的0肯定是两个连续的0.
 
设f[n]为n步操作后连续0的个数
 
则连续的0怎么样来呢?只能由上一层的01变成,也就是上一层的01一定可以产生连续00
上一层的01可以由再上一层的1得到。或者由上一层的00也可以产生一个01.
所以递推公式产生了:
f[n]=f[n-2]+2^(n-3).
 
由这个递推公式很容易产生通项公式:
当n为偶数时,f[n]=(2^(n-1)+1)/3;
当n为奇数时,f[n]=(2^(n-1)-1)/3;
 
所有用大数公式就得出来了。。
 
用JAVA写大数写出来的。。
/* f[n]=f[n-2]+2^(n-3);    n为奇数时,f[n]=(2^(n-1)-1)/3; n为偶数时,f[n]=(2^(n-1)+1)/3;    */import java.util.*;import java.math.*;import java.io.*;public class Main {    public static void main(String[] args) {        Scanner cin=new Scanner(new BufferedInputStream(System.in));        BigInteger a[]=new BigInteger[1000];        a[0]=BigInteger.valueOf(1);        for(int i=1;i<1000;i++)            a[i]=a[i-1].multiply(BigInteger.valueOf(2));        int n;        BigInteger ans;        while(cin.hasNextInt())        {             n=cin.nextInt();             if(n%2==0)//偶数             {                 ans=a[n-1].add(BigInteger.valueOf(1));                 ans=ans.divide(BigInteger.valueOf(3));             }             else             {                 ans=a[n-1].subtract(BigInteger.valueOf(1));                 ans=ans.divide(BigInteger.valueOf(3));             }             System.out.println(ans);        }    }}

 

 

 

import java.util.*;import java.math.*;import java.io.*;public class Main {    public static void main(String[] args) {        int n;        Scanner cin=new Scanner(new BufferedInputStream(System.in));        BigInteger a=BigInteger.valueOf(2);        BigInteger ans;        while(cin.hasNextInt())        {            n=cin.nextInt();            if(n%2==1)              ans=a.pow(n-1).subtract(BigInteger.valueOf(1)).divide(BigInteger.valueOf(3));            else              ans=a.pow(n-1).add(BigInteger.valueOf(1)).divide(BigInteger.valueOf(3));            System.out.println(ans);        }    }}

 

 

辛辛苦苦C++写了用份string的高精度。。竟然超时了。。。。

 

效率不高

转载地址:http://gcyao.baihongyu.com/

你可能感兴趣的文章
scrapy 的 selector 练习
查看>>
mssql2012以后新增的offset分页,看起来爽死了!!!
查看>>
47.6. Init.d Script
查看>>
为什么要用局部敏感哈希
查看>>
自己动手写客户端UI库——创建第一个控件
查看>>
github 有名的问题【ERROR: Permission to .git denied to user】
查看>>
SAP 上传图片的事务码是 smw0
查看>>
Lua之Lua数据结构-TTLSA(6)(转) good
查看>>
Swing界面刷新问题(转)
查看>>
[老老实实学WCF] 第五篇 再探通信--ClientBase
查看>>
CDN缓存不命中排查
查看>>
处理E160004: Corrupt node-revision 'lx-249.0-248.r1186/2192'
查看>>
第三篇——第二部分——第一文 SQL Server镜像简介
查看>>
谈谈Redis的SETNX
查看>>
开源新项目GitTest.com,欢迎大牛,小牛,菜鸟,同学加入发PR
查看>>
天啊,竟然忘了买春节后回上海的票。。。只能买区间票,中途再补票了。。。...
查看>>
内存数据网格hazelcast的一些机制原理
查看>>
Intellij idea下spark开发HelloWorld
查看>>
Gartner称:SaaS合同歧义引发安全隐忧
查看>>
[WCF安全系列]谈谈WCF的客户端认证[X.509证书认证]
查看>>