A. Splitting into digits

Vasya has his favourite number n. He wants to split it to some non-zero digits. It means, that he wants to choose some digits d1,d2,…,dk, such that 1≤di≤9 for all i and d1+d2+…+dk=n.

Vasya likes beauty in everything, so he wants to find any solution with the minimal possible number of different digits among d1,d2,…,dk. Help him!

Input
The first line contains a single integer n — the number that Vasya wants to split (1≤n≤1000).

Output
In the first line print one integer k — the number of digits in the partition. Note that k must satisfy the inequality 1≤k≤n. In the next line print k digits d1,d2,…,dk separated by spaces. All digits must satisfy the inequalities 1≤di≤9.

You should find a partition of n in which the number of different digits among d1,d2,…,dk will be minimal possible among all partitions of n into non-zero digits. Among such partitions, it is allowed to find any. It is guaranteed that there exists at least one partition of the number n into digits.

Examples
input
1
output
1
1

input
4
output
2
2 2

input
27
output
3
9 9 9

Note
In the first test, the number 1 can be divided into 1 digit equal to 1.

In the second test, there are 3 partitions of the number 4 into digits in which the number of different digits is 1. This partitions are [1,1,1,1], [2,2] and [4]. Any of these partitions can be found. And, for example, dividing the number 4 to the digits [1,1,2] isn't an answer, because it has 2 different digits, that isn't the minimum possible number.

题意:尝试用k个数字(0~9)加起来变成n,要求数字种类尽可能少,即能全部用相同的数字时就不用不同的数字。

正解:cf日常无聊题。第一行输出n,第二行输出n个1即可。

代码:略

B. Game with string

Two people are playing a game with a string s, consisting of lowercase latin letters.

On a player's turn, he should choose two consecutive equal letters in the string and delete them.

For example, if the string is equal to "xaax" than there is only one possible turn: delete "aa", so the string will become "xx". A player not able to make a turn loses.

Your task is to determine which player will win if both play optimally.

Input
The only line contains the string s, consisting of lowercase latin letters (1≤|s|≤100000), where |s| means the length of a string s.

Output
If the first player wins, print "Yes". If the second player wins, print "No".

Examples
input
abacaba

output
No

input
iiq

output
Yes

input
abba

output
No

Note
In the first example the first player is unable to make a turn, so he loses.

In the second example first player turns the string into "q", then second player is unable to move, so he loses.

题意:每次从给出的字符串删去两个相连且相同的字符,删去个数为奇数时输出Yes,偶数输出No。

思路:扫描字符串,找到相连的相同字符后,左端点向左,右端点向右进行搜索,直至左右端点不是相同字符,结束,继续扫描,直至字符串末尾。注意,删除子串后应将删除部分的左端和右端相连,以保证后面的扫描的正确性。解决这个问题,我们可以先对字符串进行链标记,对字符进行串联,即对每一个字符标记一个左字符和右字符,初始即其左右的临近字符,在每次操作后可将该标记进行调整。

代码:

 #include <bits/stdc++.h>
#define MAXN 100005 char ch[MAXN];
int len, tot; struct node {
char s;
int l, r;
} a[MAXN];
.
int chk(int o) {
int l = o, r = o + ; tot++;
while (a[a[l].l].s == a[a[r].r].s && a[a[l].l].s != '\000')
l = a[l].l, r = a[r].r, tot++;
a[a[r].r].l = a[l].l;
return a[r].r;
} int main() {
scanf("%s", ch + ), len = strlen(ch + );
for (int i = ; i <= len; i++) a[i].s = ch[i], a[i].l = i - , a[i].r = i + ;
for (int i = ; i <= len; i = (a[i].s == a[i + ].s && a[i].s != '\000') ? chk(i) : i + );
printf(tot % ? "Yes" : "No");
return ;
}

C. Grid game

You are given a 4x4 grid. You play a game — there is a sequence of tiles, each of them is either 2x1 or 1x2. Your task is to consequently place all tiles from the given sequence in the grid. When tile is placed, each cell which is located in fully occupied row or column is deleted (cells are deleted at the same time independently). You can place tile in the grid at any position, the only condition is that tiles (and tile parts) should not overlap. Your goal is to proceed all given figures and avoid crossing at any time.

Input
The only line contains a string s consisting of zeroes and ones (1≤|s|≤1000). Zero describes vertical tile, one describes horizontal tile.

Output
Output |s| lines — for each tile you should output two positive integers r,c, not exceeding 4, representing numbers of smallest row and column intersecting with it.

If there exist multiple solutions, print any of them.

Example
input
010
output
1 1
1 2
1 4

最新文章

  1. cloudera learning4:Hadoop集群规划
  2. ArcEngine 无法嵌入互操作类型
  3. joomla \libraries\joomla\session\session.php 反序列化截断畸形字符串导致对象注入漏洞
  4. 5.3(2)----机器人走方格2(CC150)
  5. centos下整合PagerDuty、nagios初探(on-call尝鲜和体验)
  6. 未能加载文件或程序集“System.Data.SQLite.DLL”或它的某一个依赖项
  7. Cocos2d-JS游戏导演
  8. 用 for/in 在 Java 5.0 中增强循环
  9. 读写ini文件
  10. openstack私有云布署实践【10.2 计算nova - controller节点配置(办公网环境)】
  11. hdu3018欧拉回路题
  12. 采用Opserver来监控你的ASP.NET项目系列(三、监控你的服务器状态)
  13. Keil的断点调试问题解决
  14. HDU 2242 考研路茫茫—空调教室 (边双连通+树形DP)
  15. linux下查找某文件关键字(grep 函数)
  16. vue 实现聊天框滚动到底
  17. ceph-RGW Jewel版新概念
  18. 20-[JavaScript]-BOM
  19. 查看rpm包里面内容以及里面文件的内容
  20. 呵呵sql

热门文章

  1. [network]交换机中用户权限
  2. linux-sftp-指定端口号登录远程主机
  3. World Cup(思维+模拟)
  4. &quot;群英队&quot;电梯演讲
  5. Beta版软件使用说明
  6. Xcode 6添加模板无效
  7. StringBuilder、StringBuffer和String三者的联系和区别
  8. Java JVM多线程
  9. Java的一些细节问题
  10. 词法分析用c++实现的