zoukankan      html  css  js  c++  java
  • [ 9.28 ]CF每日一题系列—— 940A规律构造

    Description:

      输入a,b,x,给你a个0,b个1,你要给出一个组合,让这个组合里存在x位,使得这x为和其x+1位不相等

    Solution:
      因为肯定有一个正确的答案,所以钻了一下空子,贪心,让个数多的在前,然后0101这样添加,知道最后一个需要满足的x,因为我这么贪心可定是能找到一个满足的,所以对于最后一个必然存在一个0/1和当前的倒数第一位不同,所以觜最后连续填充0/1,的到最后一个满足的x

    Code:

      

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    int main()
    {
        int a,b,x;
        while(~scanf("%d%d%d",&a,&b,&x))
        {
            swap(a,b);
            int usenum = 1;
            if(a < b)usenum = 0;
            printf("%d",usenum);
            if(usenum == 0)b--;
            else a--;
            int out = usenum;
            for(int i = 1;i < x;++i)
            {
                out = i & 1 == 1 ? usenum^1 : usenum;
                if(out == 1)a--;
                else b--;
                printf("%d",out);
            }
            if(out == 1)
            {
                while(a)
                {
                    printf("1");
                    a--;
                }
                while(b)
                {
                    printf("0");
                    b--;
                }
            }
            else
            {
                while(b)
                {
                    printf("0");
                    b--;
                }
                while(a)
                {
                    printf("1");
                    a--;
                }
            }
            printf("
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    把数组排成最小的数
    整数中1出现的次数
    连续子数组的最大和
    快速排序
    penCV入门
    OpenCV视频操作
    linux下导入oracle数据表
    js工作备注
    oracle创建默认表空间---重要
    oracle的导入导出
  • 原文地址:https://www.cnblogs.com/DF-yimeng/p/9720407.html
Copyright © 2011-2022 走看看