• 条形码设计


    条形码设计

    Time Limit: 1000ms
    Memory Limit: 65536KB
    64-bit integer IO format: %lld      Java class name: Main

    校ACM队准备筹划向学校批请一个专用机房。但是为了防止它变成公用机房,FL建议采用刷卡进入的办法,她设计了一种条形码,每人都对应一个。这种大小为2*n的条形码由以下三种元素构成:1*2、2*1、2*2的长方形方格。但是我们同样也知道,很多人都容易在刷卡时把卡的位置搞反。为了避免机器错误的处理,我们认为下图的两种条形码是一样的(图中颜色只是为方便说明,不用考虑)。

    FL现在很想知道一个问题,就是用她的这种条形码编码方式,对于一个给定的长度n最多能有多少不同的条形码可供使用?  

     

    Input

    多组测试数据,每一行一个正整数n(n≤28),以n = 0时作为结束。 

     

    Output

    最与每一组数据,先输出“Case k:”,其中k代表case数,接下来输出一个数,可用的的条形码数目m(m不超过231.)

     

    Sample Input

    1
    2
    3
    4
    5
    0

    Sample Output

    Case 1:1
    Case 2:3
    Case 3:3
    Case 4:8
    Case 5:12
    先算出所有的种树,在减去对称的。就是加上不对称的再除以2
    #include<iostream> 
    #include<cstdio>
    using namespace std;
    int f[50];
    int main()
    {
        f[1]=1;
        f[2]=3;
        for(int i=3;i<=50;i++)
        {
            f[i]=2*f[i-2]+f[i-1];
        }
        int n,k=1;
        while(cin>>n)
        {
            if(!n)break;
            int t;
            if(n==1||n==2){
                cout<<"Case "<<k<<":"<<f[n]<<endl;k++;continue;
            }
            if(n%2!=0)
            {
                
                t=(f[n]+f[(n/2)])/2;
                cout<<"Case "<<k<<":"<<t<<endl;
            }
            else 
            {
                t=(f[n]+2*f[(n/2)-1]+f[n/2])/2;
                cout<<"Case "<<k<<":"<<t<<endl;
            }
            k++;
        }
        return 0;
    }
  • 相关阅读:
    createjs 利用createjs 写拼图功能
    canvas 利用canvas中的globalCompositeOperation 绘制刮奖 效果
    git 命令
    cmd 打开gitshell
    Grunt完成对LESS实时编译
    nodejs gulp less编辑
    canvas 绘制 矩形 圆形
    canvas绘制时钟
    juqery easyui
    vue-router(第2节课,妙味课堂)
  • 原文地址:https://www.cnblogs.com/duanyuanzhi/p/4725736.html
Copyright © 2020-2023  润新知