清北学堂模拟赛d4t1 a


分析:大模拟,没什么好说的.我在考场上犯了一个超级低级的错误:while (scanf("%s",s + 1)),导致了死循环,血的教训啊,以后要记住了.
/*
1.没有发生改变,check一下
2.将一位1变成0
3.添一位
4.减一位
*/
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; int n,len,ss[],b[];
char s[];
bool flag = false; bool check()
{
int res = ;
for (int i = ;i <= n; i++)
if (ss[i] == )
res += i;
if (res % (n + ) == )
return true;
return false;
} bool check2()
{
int res = ;
for (int i = ; i <= n; i++)
if (b[i] == )
res += i;
if (res % (n + ) == )
return true;
return false;
} void print()
{
for (int i = ; i <= n; i++)
printf("%d",ss[i]);
printf("\n");
} void add(int x,int y)
{
memcpy(b,ss,sizeof(ss));
for (int i = n; i > x; i--)
b[i] = b[i-];
b[x] = y;
if (check2())
{
memcpy(ss,b,sizeof(ss));
flag = ;
}
} void eras(int x)
{
memcpy(b,ss,sizeof(ss));
for (int i = x; i <= n; i++)
b[i] = b[i + ];
if (check2())
{
memcpy(ss,b,sizeof(ss));
flag = ;
}
} int main()
{
scanf("%d",&n);
while(scanf("%s",s + ) != EOF)
{
memset(b,,sizeof(b));
len = strlen(s + );
flag = false;
if (abs(n - len) > )
{
printf("-1\n");
continue;
}
for (int i = ; i <= len; i++)
ss[i] = s[i] - '';
if (n == len)
{
if (check()) //
{
print();
continue;
}
for (int i = ; i <= n; i++) //
{
if (ss[i] == )
{
ss[i] = ;
if (check())
{
flag = ;
break;
}
ss[i] = ;
}
}
}
if (flag)
{
print();
continue;
}
if (len == n - )
{
for (int i = ; i <= n + ; i++) //
for (int j = ; j <= ; j++)
{
add(i,j); //i位以及以后都要往后挪1
if (flag)
break;
}
}
if (flag)
{
print();
continue;
}
if (len == n + )
{
for (int i = ; i <= n; i++)
{
eras(i);
if (flag)
break;
}
}
if (flag)
{
print();
continue;
}
printf("-1\n");
} return ;
}
清北学堂模拟赛d4t1 a的更多相关文章
- 清北学堂模拟赛day7 数字碰撞
/* clj:水题别人都满分你不是你就完了,所以说水题一定要细心一点,有这么几个细节:①前导零的处理,全是零的时候要特判②换行要注意,不要多大一行,剩下就是水水的模拟了 */ #include< ...
- 清北学堂模拟赛day7 错排问题
/* 考虑一下已经放回m本书的情况,已经有书的格子不要管他,考虑没有书的格子,不考虑错排有(n-m)!种,在逐步考虑有放回原来位置的情况,已经放出去和已经被占好的格子,不用考虑,剩下全都考虑,设t=x ...
- 清北学堂模拟赛day7 石子合并加强版
/* 注意到合并三堆需要枚举两个端点,其实可以开一个数组记录合并两堆的结果,标程好像用了一个神奇的优化 */ #include<iostream> #include<cstdio&g ...
- 清北学堂模拟赛d6t6 棋盘迷宫
3.棋盘迷宫(boardgame.pas/c/cpp)(boardgame.in/out)时间限制:5s/空间限制:256M[题目描述]小 A 和小 Z 是非常要好的朋友, 而且他们都对迷宫游戏非常有 ...
- 清北学堂模拟赛d1t2 火柴棒 (stick)
题目描述众所周知的是,火柴棒可以拼成各种各样的数字.具体可以看下图: 通过2根火柴棒可以拼出数字“1”,通过5根火柴棒可以拼出数字“2”,以此类推. 现在LYK拥有k根火柴棒,它想将这k根火柴棒恰好用 ...
- 清北学堂模拟赛d1t1 位运算1(bit)
题目描述LYK拥有一个十进制的数N.它赋予了N一个新的意义:将N每一位都拆开来后再加起来就是N所拥有的价值.例如数字123拥有6的价值,数字999拥有27的价值.假设数字N的价值是K,LYK想找到一个 ...
- 清北学堂模拟赛d2t6 分糖果(candy)
题目描述总共有n颗糖果,有3个小朋友分别叫做L,Y,K.每个小朋友想拿到至少k颗糖果,但这三个小朋友有一个共同的特点:对3反感.也就是说,如果某个小朋友拿到3颗,13颗,31颗,333颗这样数量的糖果 ...
- 清北学堂模拟赛d2t5 吃东西(eat)
题目描述一个神秘的村庄里有4家美食店.这四家店分别有A,B,C,D种不同的美食.LYK想在每一家店都吃其中一种美食.每种美食需要吃的时间可能是不一样的.现在给定第1家店A种不同的美食所需要吃的时间a1 ...
- 清北学堂模拟赛d2t4 最大值(max)
题目描述LYK有一本书,上面有很多有趣的OI问题.今天LYK看到了这么一道题目:这里有一个长度为n的正整数数列ai(下标为1~n).并且有一个参数k.你需要找两个正整数x,y,使得x+k<=y, ...
随机推荐
- 学习一点汇编 INT 16H指令
转自:http://blog.pfan.cn/feling/16292.html 功能号:00H和10H 功能:从键盘读入字符 入口参数:AH =00H—读键盘 ...
- async 函数-----------------解决异步操作隧道的亮光
之前也学过,只是没有学好,公司现在用的都是async函数 , 所以决定把它弄懂.最近看了看阮一峰的博客,做下记录. 异步I/O不就是读取一个文件吗,干嘛要搞得这么复杂?异步编程的最高境界,就是根本不用 ...
- Django总结一
HTTPRequest与HTTPresponse 一. 1.互联网两台机器之间通行:ip.端口.协议 - 协议 - HTTP (80) - HTTPS (443) 2.浏览器输入URL一回车返回页面发 ...
- 注解配置AOP切面编程
1.导入先关jar包 2.编写applicationContext.xml,配置开启注解扫描和切面注解扫描 <?xml version="1.0" encoding=&quo ...
- oracle 行转列函数pivot和unpivot
今天接到业务部门的一个需求,需要对同一公司的不同财务指标进行排序,需要用到oracle的行转列函数unpivot. 财务报表的表结构为: 要实现业务部门的排序筛选功能,需要首先将行数据转为列数据: 使 ...
- 完整版本的停车场管理系统源代码带服务端+手机android客户端
该源码是停车场管理软件附带源代码 J2EE服务端+android客户端,也是一套停车场管理车辆进出的管理软,喜欢的朋友可以看看吧. 应用的后台管理主要功能介绍:1 机构管理 ,机构有从属管理< ...
- 精美对UI设计界面赏析
最美的UI设计界面赏析 . 喜欢就关注我吧
- Angular——引入模板指令
基本介绍 引入模板一般都是固定的东西,比如导航栏,比如页面的底部,每个页面都重复写很麻烦,不如直接定义两个模板,引入到需要的页面中.这个过程实际是一个跨域的异步请求过程. 基本使用 <!DOCT ...
- Linux 查询PID和端口号
https://www.cnblogs.com/understander/p/5546458.html
- 9-4前端vue面试的问题
就没有什么顺序了,肖师傅的一些提问: 1- 配置文件中proxyTable的作用 2-@import '~styles/mixins.styl' ~的作用 3-vue模拟的本地中访问地址的url带有 ...