Computer Transformation
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3674 Accepted Submission(s): 1343
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?
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
这道题大家都是用大数做的,我实在想不出来。
刚开始用字符串————————超时(但是发现了一个规律f(n) = f(n-1)+2*f(n-2))
于是用递归————————超时
再后来想到了。
public static void main(String[] args) {
BigInteger[]arr = new BigInteger[1001];
arr[0] = BigInteger.valueOf(0);
arr[1] = BigInteger.valueOf(1);
for(int i=2;i<arr.length;i++){
arr[i] = arr[i-1].add(arr[i-2].multiply(BigInteger.valueOf(2)));
}
Scanner sc = new Scanner(System.in);
int n;
while (sc.hasNext()) {
n = sc.nextInt();
if (n <= 0 || n > 1000)
break;
System.out.println(arr[n-1]);
}
}