• 森近霖之助


    题目描述

    森近霖之助捡到了一台奇怪的机器。往里面塞进去两条固定长度的打孔纸带,就会吐出一条同样长
    度的打孔纸带。打印出来的纸带是没法放进机器里的。
    在经过一段时间的思索之后,霖之助发现了这台机器的输出具有一定的规律。具体而言,输出的每
    一位都是输入两个打孔纸带上同样位置值的“与”,“或”或者“异或”。
    拿着手中的纸带,若有所思的霖之助想要知道,他最少要自己制作多少条新的打孔纸带,才能知道
    这台机器的确切工作方式?

    输入

    第一行,包含一个整数 N,表示已有纸带的数目。
    接下来 N 行,每行包含一个字符串,表示已有的纸带的情况。

    输出

    一行,包含一个数,需要自己制作的纸带数。

    样例输入

    2
    01010101
    10101010

    样例输出

    1

    提示

    • 对于分值为 40 的子任务 1,保证 N <= 50,纸带长度 <= 10
    • 对于分值为 60 的子任务 2,保证 N <= 50,纸带长度 <= 100。

    #include<bits/stdc++.h>
    using namespace std;
    const int N=10001;
    int n,m,x,y,a[N];
    int qx,qy,hx,hy,fx,fy,dx,dy;
    int q(int x)
    {
        int s=1;
        for(int i=0;i<x;i++)
        {
            s+=6*i;
            if(s>=x)
                return i;
        }
    }
    int h(int x,int k)
    {
        if(x>=a[k]-k) return k;
        else if(x>=a[k]-3*k) return k-(a[k]-k-x);
        else if(x>=a[k]-4*k) return -k;
        else return -k+a[k]-k*4-x;
    }
    int f(int x,int k)
    {
        if(x>=a[k]-k) return k-(a[k]-x)*2;
        else if(x>=a[k]-2*k) return -k-(a[k]-k-x);
        else if(x>=a[k]-3*k) return -k*2+(a[k]-k*2-x);
        else if(x>=a[k]-4*k) return -k+(a[k]-k*3-x)*2;
        else if(x>=a[k]-5*k) return k+(a[k]-k*4-x);
        else return k*2-(a[k]-k*5-x);
    }
    int main()
    {
        scanf("%d%d",&x,&y);
        a[0]=1;
        for(int i=1;a[i-1]<N;i++)
            a[i]=a[i-1]+6*i;
        qx=q(x),qy=q(y);
        hx=h(x,qx),hy=h(y,qy);
        fx=f(x,qx),fy=f(y,qy);
        dx=abs(hx-hy),dy=abs(fx-fy);
        if(dx>=dy)
            printf("%d",dx);
        else
        {
            m=dx,dy-=dx;
            printf("%d",m+(dy+1)/2);
        }
        return 0;
    }
  • 相关阅读:
    2019CCPC厦门游记
    [codeforces940E]Cashback
    [codeforces#592Div2]C-G题
    Material Design UI素材库【React版】【2】--定制
    Material Design UI素材库【React版】【1】--入门
    resin中配置session相关参数
    quartz定时任务
    Linux内核----make menuconfig时出错
    【Qt学习之路】Qt开发环境搭建
    已学算法与数据结构的习题
  • 原文地址:https://www.cnblogs.com/LJA001162/p/13288027.html
Copyright © 2020-2023  润新知