首页 > 其他 > 详细

UVA - 1647 Computer Transformation(计算机变换)(找规律)

时间:2017-02-09 15:58:59      阅读:215      评论:0      收藏:0      [点我收藏+]

题意:初始串为一个1,每一步会将每个0改成10,每个1改成01,因此1会依次变成01,1001,01101001,……输入n(n<=1000),统计n步之后得到的串中,"00"这样的连续两个0出现了多少次。

分析:找规律,输出n等于20之前所有的结果

技术分享

得到结论,i为奇数时,a[i] = a[i - 1] * 2 - 1; i为偶数时,a[i] = a[i - 1] * 2 + 1。

import java.util.*;
import java.math.BigInteger;
public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		BigInteger[] a = new BigInteger[1010];
		a[1] = new BigInteger("0");
		BigInteger one = new BigInteger("1");
		BigInteger two = new BigInteger("2");
		for(int i = 2; i <= 1000; ++i){
			if(i % 2 == 1){
				a[i] = a[i - 1].multiply(two).subtract(one);
			}
			else{
				a[i] = a[i - 1].multiply(two).add(one);
			}
		}
		while(sc.hasNextInt()){
			int n = sc.nextInt();
			System.out.println(a[n]);
		}
	}

}

  

UVA - 1647 Computer Transformation(计算机变换)(找规律)

原文:http://www.cnblogs.com/tyty-Somnuspoppy/p/6382257.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!