poj 3370 Halloween treats (组合数学:鸽巢原理)
来源:互联网 发布:linux 终端输入中文 编辑:程序博客网 时间:2024/05/18 13:08
判断一组数中是否存在和整除c的子集,若存在输出子集中元素对应下标
否则输出no sweets
取sum为第1个到当前第i堆糖果的集合
令tmp = sum%c
则在i从1到n的过程中,因为n>=c
当n>c时根据鸽巢原理tmp必然重复
我们可以简单的取重复之间的所有数
而当n==c时只需取1-使得tmp == 0之间(包括边界)的下标即可
可以得知此题恒有解
代码如下:
#include <cstdio>#include <cstring>#define MAXN 100100using namespace std;int flag[MAXN];int a[MAXN];int main(void) { int n, c, sum, tmp; while(scanf("%d%d", &c, &n) && (c||n)) { sum = 0; memset(flag, 0, sizeof(flag)); for(int i=1; i<=n; ++i) { scanf("%d", &a[i]); } for(int i=1; i<=n; ++i) { sum += a[i]; tmp = sum%c; sum %= c; if(tmp == 0) { printf("%d", 1); for(int j=2; j<=i; ++j) printf(" %d", j); break; } else { if(flag[tmp]) { printf("%d", flag[tmp]+1); for(int j=flag[tmp]+2; j<=i; ++j) printf(" %d", j); break; } } flag[tmp] = i; } puts(""); } return 0;}
0 0
- poj 3370 Halloween treats (组合数学:鸽巢原理)
- 数学 ( 鸽巢原理 )——Halloween treats ( POJ 3370 )
- POJ 3370 Halloween treats 鸽巢原理
- POJ 3370 Halloween treats 鸽巢原理
- POJ 3370 Halloween treats 鸽巢原理
- POJ 3370 Halloween treats - 鸽巢原理
- POJ 3370 Halloween treats【鸽巢原理】
- poj 3370 Halloween treats(反演定理+鸽巢原理)
- 鸽巢原理应用-分糖果 POJ 3370 Halloween treats
- POJ 3370 Halloween treats 鸽巢原理 解题
- POJ 3370 Halloween treats(鸽巢原理)
- POJ 题目3370 Halloween treats(鸽巢原理)
- POJ 3370 && HDU 1808 Halloween treats(鸽巢原理)
- POJ 3370-Halloween treats(鸽巢原理)
- POJ 3370:Halloween treats(鸽巢原理)
- Halloween treats(组合数学:鸽巢原理的简单应用)
- poj 3370 Halloween treats(抽屉原理)
- POJ 3370 Halloween treats(抽屉原理)
- C++中数组的下标和指针
- Table 组件使用指南之十四:使用POJO绑定
- java常用误区
- android webview 通过html5播放在线视频 切换大屏
- KindEditor富文本编辑器 items配置项 对照表
- poj 3370 Halloween treats (组合数学:鸽巢原理)
- 怎么样产生和捕获SUGUSR信号??
- sscanf的使用 HDU 2093
- Qt 调用 VC(CUDA)制作的dll
- Table 组件使用指南之十五:使用POJO绑定并实现排序与过滤功能
- C++类与C#类区别详述
- C语言的一个正则表达式pcre
- C语言模拟String对象类型
- Table 组件使用指南之十六:动态增加Column