题目链接:http://codeforces.com/problemset/problem/305/A

题目意思:给出一个序列,需要从中选择一些数,这些数需要满足:任意的两个数中每一位至少有一个数满足该位有0。例如,406, 10(可以看成010)是符合条件的; 406, 11 就不符合条件,因为个位上这两个数都不包含0。

一开始想得太过复杂:把整型的数保存到字符数组中,再用strstr函数找出是否有0的存在,但是这样做根本不能解决问题,因为不能得出0的具体位置。并且不能判断出两个数中的不同位至少有一个有0这个问题;后来甚至想到用位运算,看了下tutorial,原来又把问题想复杂了。

其实,解决的方法不难。首先看数据范围,最大是100,最小是0。这两个数肯定是要保存下来的,因为它和任何一个在区间(0, 100)中的数相加都符合每一位至少有一个数有0。接着考虑个位上的数,即(0,10),只需要保存一个,还有[10, 100)中被10整除的数,也是只需要保存一个。举个例子,比如8,30, 100, 0,两两组合都符合至少两个数中满足某一位是0的(不够位的,可以在前面添0,8可以看成008或者08)。至于[10, 100)中不能被10整除的数有一种情况也是需要只保存一个的,就是当序列中只有0或100或两个同时都有。

特别要注意一个比较容易遗忘的细节,很阴险的说~~~当序列中只有一个数的时候,无论是什么,都需要输出。隐含是满足条件的!!!卑鄙!!!

 #include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std; const int maxn = + ;
int ans[maxn]; int main()
{
int i, k, tmp, tmp1, cnt, cnt1, flag, flag1, flag2, flag3;
while (scanf("%d", &k) != EOF)
{
// freopen("in.txt", "r", stdin);
flag = flag1 = flag2 = flag3 = ;
cnt1 = cnt= ;
for (i = ; i < k; i++)
{
scanf("%d", &tmp);
if ((tmp == || tmp == ) && cnt1 <= ) // 0 or 100,cnt1不用也可以,只是为了严谨,防止序列中有多个重复的0或100
{
ans[cnt++] = tmp;
cnt1++;
flag = ;
}
else if (tmp >= && tmp < ) // [10, 100)
{
if (tmp % == && !flag1) // 10的倍数
{
ans[cnt++] = tmp;
flag1 = ;
}
else if (!flag2) // 不是10的倍数
{
tmp1 = tmp; // 暂时保留,因为有可能不需要输出
flag2 = ;
}
}
else if (tmp > && tmp < && !flag3) // (0, 10)
{
ans[cnt++] = tmp;
flag3 = ;
}
}
if (flag && !flag1 && !flag3 && k != )
{
if (flag2) // 这个条件十分关键
ans[cnt++] = tmp1;
}
if (flag2 && !flag && !flag1 && !flag3)
printf("1\n%d\n", tmp);
else
{
printf("%d\n", cnt);
for (i = ; i < cnt; i++)
printf("%d ", ans[i]);
printf("\n");
}
}
return ;
}

codeforces A. Strange Addition 解题报告的更多相关文章

  1. Codeforces Round 665 赛后解题报告(暂A-D)

    Codeforces Round 665 赛后解题报告 A. Distance and Axis 我们设 \(B\) 点 坐标为 \(x(x\leq n)\).由题意我们知道 \[\mid(n-x)- ...

  2. Codeforces Round 662 赛后解题报告(A-E2)

    Codeforces Round 662 赛后解题报告 梦幻开局到1400+的悲惨故事 A. Rainbow Dash, Fluttershy and Chess Coloring 这个题很简单,我们 ...

  3. Codeforces Round #277.5 解题报告

    又熬夜刷了cf,今天比正常多一题.比赛还没完但我知道F过不了了,一个半小时贡献给F还是没过--应该也没人Hack.写写解题报告吧= =. 解题报告例如以下: A题:选择排序直接搞,由于不要求最优交换次 ...

  4. timus 1175. Strange Sequence 解题报告

    1.题目描述: 1175. Strange Sequence Time limit: 1.0 secondMemory limit: 2 MB You have been asked to disco ...

  5. codeforces B. Simple Molecules 解题报告

    题目链接:http://codeforces.com/problemset/problem/344/B 题目意思:这句话是解题的关键: The number of bonds of an atom i ...

  6. codeforces 591A. Wizards' Duel 解题报告

    题目链接:http://codeforces.com/problemset/problem/591/A 题目意思:其实看下面这幅图就知道题意了,就是Harry 和 He-Who-Must-Not-Be ...

  7. codeforces 582A. GCD Table 解题报告

    题目链接:http://codeforces.com/problemset/problem/582/A 网上很多题解,就不说了,直接贴代码= = 官方题解: http://codeforces.com ...

  8. codeforces 581C. Developing Skills 解题报告

    题目链接:http://codeforces.com/problemset/problem/581/C 题目意思:给出 n 个数:a1, a2, ..., an (0 ≤ ai ≤ 100).给出值 ...

  9. codeforces 577B. Modulo Sum 解题报告

    题目链接:http://codeforces.com/problemset/problem/577/B 题目意思:就是给出 n 个数(a1, a2, ..., an) 和 m,问能不能从这 n 个数中 ...

随机推荐

  1. git分支与版本管理、版本回退、冲突解决记录

    一.基础使用 1.初始化本地仓库 git init 2.关联远程仓库 git remote add origin git@github.com:用户名/仓库名.git 3.添加远程仓库文件到本地 gi ...

  2. 《项目经验》--后台一般处理程序向前台JS文件传递JSON,JS解析JSON,将数据显示在界面--显示在DropDownList 或 显示在动态创建的table中

    http://blog.csdn.net/mazhaojuan/article/details/8599167 先看一下我要实现的功能界面: 这篇文章主要介绍:后台一般处理程序把从数据库查找的数据,转 ...

  3. xss概念剖析

    XSS又叫CSS (Cross-Site Scripting) ,跨站脚本攻击.恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意 ...

  4. Struts2几种传值

    1.url向action传值 url为 http://localhost/txyl/teacher_info?method:teacher_info&teacher_seq=dedafdsf3 ...

  5. 快速搭建ssh(最终版)

    一个月又忘了.还是做个笔记.自己看下就能想起来... 1.在MyEclipse中新建web Project 2.首先整合struts

  6. 详谈OC(object-c)深浅复制/拷贝-什么情况下用retain和copy

    读前小提示:对于深浅复制有一个清楚的了解,对于学习oc的朋友来说,至关重要.那么首先,我们要明白深浅复制是如何定义的呢.这里为了便于朋友们理解,定义如下. 浅 复 制:在复制操作时,对于被复制的对象的 ...

  7. Linux命令sed

    如果一个文本文件数据比较多,大概有40万条数据,我想取出第500-1000条数据,保存到另一个文件,用linux命令该如何操作? sed -n '500,1000p' 41w.txt > new ...

  8. Ubuntu 下忘记mysql 密码

    在Ubuntu下忘记密码.可按以下步骤重设:1.停止mysql服务: #/etc/init.d/mysql stop;2,安全模式启动mysql,略过密码验证: # sudo mysqld_safe ...

  9. CocoStudio基础教程(1)创建UI并载入到程序中

    1.概述 CocoStudio的使用无疑是cocos2d-x 3.0的重要组成部分,接下来我们用它来创建一组UI,并将其读入到程序中显示出来.先上效果图: 2.导出 在导出之前,最好先创建一个新的工程 ...

  10. CSS简写指南

    高效的css写法中的一条就是使用简写.通过简写可以让你的CSS文件更小,更易读.而了解CSS属性简写也是前端开发工程师的基本功之一.今天我们系统地总结一下CSS属性的缩写. 色彩缩写 色彩的缩写最简单 ...