POJ 2356:

题目大意:

给定n个数,希望在这n个数中找到一些数的和是n的倍数,输出任意一种数的序列,找不到则输出0

这里首先要确定这道题的解是必然存在的

利用一个 sum[i]保存前 i 个数的和对n的取模

sum[0] = 0;

那么sum[0] ~ sum[n]有n+1个数据,这些数据的范围都是 0~n , 要是存在 sum[i] = 0,那么输出前 i 个数据即可

要是不存在那根据鸽巢原理可以说明必然能找到一个 sum[i] = sum[j]  ,那么说明 (sum[i+1] + sum[i+2] ...+sum[j])%n = 0的,把这j-i个数输出即可

那么说明我们总是能找到一段连续的数据使其和是n的倍数

 #include <cstdio>
#include <cstring> using namespace std;
const int N = ; bool vis[N];
int sum[N] , a[N] , pos[N]; int main()
{
// freopen("a.in" , "r" , stdin);
int n;
while(scanf("%d" , &n) != EOF)
{
for(int i= ; i<=n ; i++){
scanf("%d" , a+i);
}
memset(vis , , sizeof(vis));
vis[] = , pos[] = ;
for(int i= ; i<=n ; i++){
sum[i] = (sum[i-]+a[i])%n;
if(vis[sum[i]]){
int l = pos[sum[i]];
printf("%d\n" , i-l);
for(int j = l+ ; j<=i ; j++){
printf("%d\n" , a[j]);
}
break;
}
pos[sum[i]] = i;
vis[sum[i]] = ;
}
}
return ;
}

POJ3370:

 #include <cstdio>
#include <cstring> using namespace std;
#define N 100005
bool vis[N];
int sum[N] , a[N] , pos[N]; int main()
{
// freopen("a.in" , "r" , stdin);
int c , n;
while(scanf("%d%d" , &c , &n) , c||n)
{
for(int i= ; i<=n ; i++)
scanf("%d" , a+i);
memset(vis , ,sizeof(vis));
sum[] = , vis[] = , pos[] = ;
for(int i= ; i<=n ; i++){
sum[i] = (sum[i-] + a[i])%c;
if(vis[sum[i]]){
int l = pos[sum[i]];
for(int j=l+ ; j<=i ; j++){
if(j == l+) printf("%d" , j);
else printf(" %d" , j);
}
printf("\n");
break;
}
vis[sum[i]] = ;
pos[sum[i]] = i;
}
}
return ;
}

POJ 2356 && POJ 3370 鸽巢原理的更多相关文章

  1. Find a multiple POJ - 2356 容斥原理(鸠巢原理)

    1 /* 2 这道题用到了鸠巢原理又名容斥原理,我的参考链接:https://blog.csdn.net/guoyangfan_/article/details/102559097 3 4 题意: 5 ...

  2. POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理

    Halloween treats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7644   Accepted: 2798 ...

  3. POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理

    Find a multiple Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7192   Accepted: 3138   ...

  4. POJ 3370 Halloween treats( 鸽巢原理简单题 )

    链接:传送门 题意:万圣节到了,有 c 个小朋友向 n 个住户要糖果,根据以往的经验,第i个住户会给他们a[ i ]颗糖果,但是为了和谐起见,小朋友们决定要来的糖果要能平分,所以他们只会选择一部分住户 ...

  5. poj 2356 Find a multiple(鸽巢原理)

    Description The input contains N natural (i.e. positive integer) numbers ( N <= ). Each of that n ...

  6. POJ 3370 Halloween treats 鸽巢原理 解题

    Halloween treats 和POJ2356差点儿相同. 事实上这种数列能够有非常多,也能够有不连续的,只是利用鸽巢原理就是方便找到了连续的数列.并且有这种数列也必然能够找到. #include ...

  7. poj Find a multiple【鸽巢原理】

    参考:https://www.cnblogs.com/ACShiryu/archive/2011/08/09/poj2356.html 鸽巢原理??? 其实不用map但是习惯了就打的map 以下C-c ...

  8. POJ3370&amp;HDU1808 Halloween treats【鸽巢原理】

    题目链接: id=3370">http://poj.org/problem?id=3370 http://acm.hdu.edu.cn/showproblem.php?pid=1808 ...

  9. cf319.B. Modulo Sum(dp && 鸽巢原理 && 同余模)

    B. Modulo Sum time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

随机推荐

  1. J20170602-ts

    アソシエーション association   n. 联想; 协会,社团; 联合,联系; アンケート    英文是questionnaire

  2. android_app c++框架

    找遍了全网,没有一个完整的可用的框架.ndk自带的android_native_app_glue确实不太好用,闭关几天,写出了一个框架.完全的消息队列调用,目前测试的主体框架是没有什么问题了,程序入口 ...

  3. 2017西安网络赛C_SUM

    样例输入 1 1 样例输出 89999999999999999999999999 题意:利用上述公式,求出k的值 思路:找规律,找规律发现233个9,无论x是何值永远成立 (这种规律题尽量就不用跟队友 ...

  4. javascript 信息的发布与删除

    现在很多类似以微博发布动态的效果,下面为一个用 JavaScript写的小小的类似微博发布信息的案例 <!DOCTYPE html> <html lang="en" ...

  5. 在Azure Ubunt Server 14.04虚机中使用Deep-Visualization-Toolbox

      参考网站 a)   https://zhuanlan.zhihu.com/p/24833574?utm_source=tuicool&utm_medium=referral b)   ht ...

  6. ftp获取mysql数据库方法

    我说的这种情况是针对mysql数据库的,首先下载一个mysql通过ftp放到站点里面,然后通过配置文件找到数据库的名字和密码,然后通过浏览器访问数据库,直接在域名后面加上下载的mysql文件的名字就可 ...

  7. NodeJs学习记录(二)win7下 配置node连接oracle的环境

    2017/01/23 星期一 前言:还没看几眼教程,就开始分配任务,涉及到连oracle数据库,所以顺便把整个环境的配置放上来 安装文件清单(1).node-v6.9.1-x64.msi(2).pyt ...

  8. FCC 基础JavaScript 练习4

    1.另一种数据类型是布尔(Boolean).布尔 值要么是true要么是false, 它非常像电路开关, true 是“开”,false是“关”.这两种状态是互斥的 2.伪代码 if(条件为真){ 语 ...

  9. Pyhton TestCase运行闪退与失败,原因不详。。。

    把源码贴上来,希望某位大神可以指点迷津: """Unit test for odbchelper.py This program is part of "Div ...

  10. vue2.0框架认识

    虚拟dom和声明式渲染: Vue的编译器在编译模板之后,会把这些模板编译成一个渲染函数 .而函数被调用的时候就会渲染并且返回一个 虚拟DOM的树 .这个树非常轻量,它的职责就是描述当前界面所应处的状态 ...