Computer Transformation
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8545 Accepted Submission(s): 3223
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翻译:初始是1(1可以变成01 0可以变成10)第一次1变成01第二次0变成 10 1变成 01 结果就是 1001 以此类推样例输入中的2和3就是这个操作进行几次输出就是两个0是靠近的情况的对数有几对做法:直接用笨办法做 看了一下输出 直接得出规律 强势无比第5位 是11 等于1 + 1 + 3 + 5 =10,10 + 1 = 11(这里给他多加个1)第6位 是 21 等于 1 + 1 + 3 + 5 + 11 = 21 (这里不用多加1)第7位 是 43 等于 1 + 1 + 3 + 5 + 11 + 21 = 42,42 + 1 = 43(这里给他多加1)规律就出来了代码:没有贴根据规律写的代码,而且也不用写,这么简单。重要的是找到规律的方法package ACM1000_1099; public class ComputerTransformation1041 { // TODO: 2017/12/5 直接撸出来 再看规律 void calculate() { int times = 10; int[] current = {1}; for (int i = 0; i < times; i ++) { int len = current.length; int[] a = new int[len * 2]; //赋值操作 for (int j = 0; j < len; j ++) { if (current[j] == 1) { a[2 * j] = 0; a[2 * j + 1] = 1; } else { a[2 * j] = 1; a[2 * j + 1] = 0; } } current = a; // for (int k = 0; k < current.length; k ++) { // System.out.print(current[k] + " "); // } // System.out.println(); int all = 0; int cur = 2; for (int k = 0; k < current.length; k ++) { if (cur == 0 && current[k] == 0) { all ++; } cur = current[k]; } System.out.println(all + " "); } } public static void main(final String[] args) throws Exception { ComputerTransformation1041 c = new ComputerTransformation1041(); c.calculate(); } }