poj3370nbsp;poj2356nbsp;鸽巢定理

2024-04-01 17:38

本文主要是介绍poj3370nbsp;poj2356nbsp;鸽巢定理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

解梯报告

题目链接 http://poj.org/problem?id=3370

题目大意 :给你n个数,找出其中c个数满足c个数的和是c的倍数。(c <=n

思路 :余数计算 鸽巢定理。

            取余是一种常用手段,尤其是当题目中找一些数字直接和的关系的时候,往往通过

            余数来将数字分类。2011年多校FZU有一位dp的题目就可以用余数乱搞。

            将前i个数的和模c的值存下来,如果sum[i] = 0sum[i]之前第k位出现过,那么

                Sum[i] – sum[k] = 0,k+1i是满足模c余零的。到这里还没有用到鸽巢定理,题

目描述里有无解的情况,而一个重要的信息(c<=n)告诉我们这里是必然有解的。

余数有c个(0c)要放到n个盒子里(n>=c)那么必然有一个是0或者有两个是

一样的。《鸽巢定理》

 

AC code

#include <cstdio>

#include <cstring>

#define MAXN 100100

 

int num[MAXN], sum[MAXN], vis[MAXN];

 

void print(int a, int b){

    for(int i = a; i <= b; ++ i) printf("%d ", i);

    printf("\n");

}

 

int main(){

    int c, n;

    while(~scanf("%d %d", &c, &n), c || n){

       for(int i = 1; i <= n; i ++){

           scanf("%d", &num[i]);

       }

       memset(vis, 0, sizeof(vis));

       sum[0] = 0;

       for(int i = 1; i <= n; ++ i){

           sum[i] = (sum[i - 1] + num[i]) % c;

           if(sum[i] == 0){

              print(1, i);

              break;

           }

           if(vis[sum[i]]){

              print(vis[sum[i]] + 1, i);

              break;

           }

           vis[sum[i]] = i;

       }

    }

    return 0;

}

 poj3370 <wbr>poj2356 <wbr>鸽巢定理

 

这篇关于poj3370nbsp;poj2356nbsp;鸽巢定理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/867748

相关文章

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

Java验证辛钦大数定理

本实验通过程序模拟采集大量的样本数据来验证辛钦大数定理。   实验环境: 本实验采用Java语言编程,开发环境为Eclipse,图像生成使用JFreeChart类。   一,验证辛钦大数定理 由辛钦大数定理描述为: 辛钦大数定理(弱大数定理)  设随机变量序列 X1, X2, … 相互独立,服从同一分布,具有数学期望E(Xi) = μ, i = 1, 2, …, 则对于任意正数ε ,

CPC23三 K.(Lucas定理)

K.喵喵的神·数 Time Limit: 1 Sec Memory Limit: 128 MB Description 喵喵对组合数比较感兴趣,并且对计算组合数非常在行。同时为了追求有后宫的素质的生活,喵喵每天都要研究质数。 我们先来复习一下什么叫做组合数。对于正整数P、T 然后我们再来复习一下什么叫质数。质数就是素数,如果说正整数N的约数只有1和它本身,N

量化交易面试:什么是中心极限定理?

中心极限定理(Central Limit Theorem, CLT)是概率论和统计学中的一个重要定理,它描述了在一定条件下,独立随机变量的和的分布趋向于正态分布的性质。这个定理在量化交易和金融分析中具有重要的应用价值。以下是对中心极限定理的详细解释: 基本概念: 中心极限定理指出,当我们从一个具有任意分布的总体中抽取足够大的样本时,样本均值的分布将近似于正态分布,无论原始总体的分布是什么样的。

中国剩余定理和扩展中国剩余定理(模板)

给你一元线性同余方程组,如下: 其中,当  ,  , ... ,  两两互质的话就是中国剩余定理 , 不互质的话就是扩展中国剩余定理。 给出中国剩余定理的计算过程和扩展中国剩余定理的推理过程: #include<bits/stdc++.h>using namespace std;#define int long long#define endl '\n'#define

等式(数论/唯一分解定理)

链接: https://www.nowcoder.com/acm/contest/90/F 来源:牛客网 题目描述 给定n,求1/x + 1/y = 1/n (x<=y)的解数。(x、y、n均为正整数) 输入描述: 在第一行输入一个正整数T。接下来有T行,每行输入一个正整数n,请求出符合该方程要求的解数。(1<=n<=1e9) 输出描述: 输出符合该方程要求的解数。

数论 - 算数基本定理的运用 --- nefu 118 : n!后面有多少个0

题目链接: http://acm.nefu.edu.cn/JudgeOnline/problemshow.php   Mean:   略。 analyse:  刚开始想了半天都没想出来,数据这么大,难道是有什么公式? 首先我们要知道一点:n!里面所有的0都是2*5得来的,而且不管怎样2的数量一定是>5的数量,所以我们只需要考虑有多少个5就可。 后面也是看了解题报告才知道有

数论 --- 费马小定理 + 快速幂 HDU 4704 Sum

Sum  Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=4704   Mean:  给定一个大整数N,求1到N中每个数的因式分解个数的总和。   analyse: N可达10^100000,只能用数学方法来做。 首先想到的是找规律。通过枚举小数据来找规律,发现其实answer=pow(2,n-1);

HDU 1573X问题(扩展中国剩余定理)

Problem Description 求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], …, X mod a[i] = b[i], … (0 < a[i] <= 10)。 Input 输入数据的第一行为一个正整数T,表示有T组测试数据。每组测试数据的第一行为两个正整数N,M (0 <

POJ1659_Frogs' Neighborhood(判断一个度数序列是否可图/Havel-Hakimi定理)

Frogs' Neighborhood Time Limit: 5000MS Memory Limit: 10000KTotal Submissions: 6809 Accepted: 2960 Special Judge Description 未名湖附近共有N个大小湖泊L1, L2, ..., Ln(其中包括未名湖),每个湖泊Li里住着一只青蛙Fi(1 ≤ i ≤ N)。如果