zoukankan      html  css  js  c++  java
  • 短代码.EOF串

    一个只包含EOF三个字符的字符串,并且不存在连续的O,问长度为n的这种串有多少种。
    其中0<n<40。

    递推: e'=e+o+f, o' =e+f, f'=e+o+f
    // 预处理查表
    main(i,n){__int64 d[39]={1,1,1,3};for(;i<39;i++)d[i][1]=d[i-1][0]+d[i-1][2],d[i][2]=d[i][0]=d[i][1]+d[i-1][1],d[i][3]=d[i][1]+d[i][0]*2;while(~scanf("%d",&n))printf("%I64d\n",d[n][3]);}
    // 把eof分开存,去掉二级数组的括号
    main(i,n){__int64 e[39]={1},o[39]={1},f[39]={1},s[39]={3};for(;i<39;i++)f[i]=e[i]=(o[i]=e[i-1]+f[i-1])+o[i-1],s[i]=o[i]+e[i]*2;while(~scanf("%d",&n))printf("%I64d\n",s[n-1]);}
    // e,f总是一样的,于是去掉f
    main(i,n){__int64 e[39]={1},o[39]={1},s[39]={3};for(;i<39;i++)e[i]=(o[i]=e[i-1]*2)+o[i-1],s[i]=o[i]+e[i]*2;while(~scanf("%d",&n))printf("%I64d\n",s[n-1]);}
    // 与其保存总和,不如结果时计算一下
    main(i,n){__int64 e[39]={1},o[39]={1};for(;i<39;i++)e[i]=(o[i]=e[i-1]*2)+o[i-1];while(~scanf("%d",&n))printf("%I64d\n",o[n-1]+e[n-1]*2);}
    // 不再查表,按需计算
    main(i,n){__int64 e,o,t;for(;~scanf("%d",&n);printf("%I64d\n",o+e+e))for(i=e=o=1;i<n;i++)t=o,e=(o=e+e)+t;}
    // 调整一下递推式
    main(n){__int64 e,o,t;for(;~scanf("%d",&n);printf("%I64d\n",o+e+e))for(e=o=1;--n;e=(o=e+e)+t)t=o;}
    // 再调整递推式,去掉临时变量
    main(n){__int64 e,o;for(;~scanf("%d",&n);printf("%I64d\n",o+e+e))for(e=o=1;--n;o=e-o)e+=e+o;}
    // 多一次循环,结果就是e
    main(n){__int64 e,o;for(;~scanf("%d",&n);printf("%I64d\n",e))for(e=o=1;n--;o=e-o)e+=e+o;}
    农夫三拳,这下你还能更短吗。嘿嘿嘿:)
  • 相关阅读:
    win7下配置pfn

    转(每天淘汰你自己)
    [asp]替换连续多个回车换行
    安装windows组件 提示 无法加载安装安装程序:Wbemupgd.dll
    asp.net三层结构例子
    sql2005下读取字段属性
    discuz数据表结构
    Ajax2.0 'Sys'未定义的解决办法
    .net(c#)读取flash(swf)文件的尺寸
  • 原文地址:https://www.cnblogs.com/kaikai/p/823649.html
Copyright © 2011-2022 走看看