Computer Transformation

题意 从1开始 1变为01 0变为10 计数变换多少次后连续0序列的个数。

题解 找规律(菲波数)+大数相加

a[i]=a[i-1]+a[i-2]*2;

 1 #include <stdio.h>
 2 #include<iostream>
 3 #include<cstring>
 4 #define N 1001
 5 using namespace std;
 6 char a[N][N];
 7
 8 int main()
 9 {
10     memset(a,‘0‘,sizeof(a));
11     a[2][0]=‘1‘;
12     a[3][0]=‘1‘;
13     int i,j,d=1;
14     for(i=4;i<N;i++)//i控制行数
15     {
16         d++;   //控制列数
17         int c=0,s;  //c为进位指数的初值
18         for(j=0;j<=d;j++)      //j控制列数的循环
19         {
20             s=a[i-1][j]-‘0‘+a[i-2][j]-‘0‘+a[i-2][j]-‘0‘+c;
21             c=s/10; //满十进位
22             a[i][j]=s%10+‘0‘;   //满十的话,将舍位
23         }
24     }
25
26     int t,n;
27
28     char s[1000];
29
30         while(~scanf("%d",&n))
31         {
32
33         if(n==1)
34             puts("0");
35         else
36         {
37         int k=N-1;
38
39         while(k--)
40
41         {
42
43             if(a[n][k]!=‘0‘) break;    //反向搜索第一个不为‘0’的字符
44
45         }
46
47         for(i=k;i>=0;i--)  //从后往前输出
48
49             printf("%c",a[n][i]);
50
51        printf("\n");
52         }
53
54     }
55
56     return 0;
57
58 }
时间: 2024-10-27 11:24:50

Computer Transformation的相关文章

H - Computer Transformation(简单数学题+大数)

H - Computer Transformation Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice _ Appoint description:  System Crawler  (Oct 10, 2016 1:02:59 PM) Description A sequence consisting of one digit, the numb

hdu_1041(Computer Transformation) 大数加法模板+找规律

Computer Transformation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8367    Accepted Submission(s): 3139 Problem Description A sequence consisting of one digit, the number 1 is initially wri

(大数)Computer Transformation hdu1041

Computer Transformation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8688    Accepted Submission(s): 3282 Problem Description A sequence consisting of one digit, the number 1 is initially wr

ACM学习历程—HDU1041 Computer Transformation(递推 &amp;&amp; 大数)

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, afte

Computer Transformation(hdoj 1041)

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.

UVa 1647 - Computer Transformation 解题心得

这个题目.... 想上题意 10935 Throwing cards away I Given is an ordered deck of n cards numbered 1 to n with card 1 at the top and card n at the bottom. The following operation is performed as long as there are at least two cards in the deck: Throw away the to

HDOJ-1041 Computer Transformation(找规律+大数运算)

http://acm.hdu.edu.cn/showproblem.php?pid=1041 有一个初始只有一个1的串 每次都按①0 -> 10;②1 -> 01;这两条规则进行替换 形如:n = 1  1 n = 2  01 n = 3  1001 ... 求经过n步替换之后 串中只含复数个0的连续子串(不难发现,这种子串只能是‘00’)的出现次数 因为0<n<=1000的限制 在最坏情况下(n==1000)串的长度将达到2^1000位 排除了直接模拟上述替换过程的可能 列出前几

UVa 1647 (递推) Computer Transformation

题意: 有一个01串,每一步都会将所有的0变为10,将所有的1变为01,串最开始为1. 求第n步之后,00的个数 分析: 刚开始想的时候还是比较乱的,我还纠结了一下000中算是有1个00还是2个00 最终想明白后,并不会出现这样的子串. 总结了几个要点: 第n步之后,串的长度为2n,且0和1的个数相等,分别为2n-1 1经过两步变化为1001,所以每个1经过两步变化就会得到一个00,而且这个00分别被左右两边一个1包围着,不会与其他数字凑出额外的00 0经过两步变化为0110,所以00就会变成0

HDU 1041[Computer Transformation] 递推 高精度

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1041 题目大意:初始数字1.规则1变成01,0变成10.问经过N次完整变换后,有多少连续零对. 关键思想:考虑零对的直接来源只有"10",而"10"的直接来源只有"1"或者"00".于是可以得到以下几种递推式 1. dp[i]=pow(2,i-3)+dp[i-2];当前层多少1,下一层就多少10,下下层就多少00:当前层多少00,

UVa 1647 - Computer Transformation

题目:初始给你一个1,然后每一次1变成01,0变成10求变化n步后,有多少个00. 分析:数学题.我们观察变化. 00 -> 1010 出现 10.01 01 -> 1001 出现 10.00.01 10 -> 0110 出现 01.11.10 11 -> 0101 出现 01.10 仅仅有01下一步会生成00,可是00.01.10.11都会生成01.每个1都会生成01,而00也能够生成01, 由此分成两种情况计算:设O(n)是变化n步后1的个数.Z(n)是变化n步后生成的00的个