题目:

这是一道很神奇的题目,做法非常巧妙。巧妙在题目要求n个数字,而且正好要求和为n的倍数。

思路:用sum[i]表示前i个数字的和%n。得到sum[ 1-N ]共N个数字。

   N个数字对N取模,每个数字都在0-( N-1 )之间。

   可能出现两种情况  1:有一个数字等于0。(都不相等)   2:至少有两个数字相等。

1.如果sum数组中有一个数字sum[i]=0,说明前i个数字的和为N的倍数。

2.如果sum[i]==sum[j],说明第i-( j-1 )或者( i+1 )-j的和为N的倍数。

只有1、2两种情况,不用考虑无解的情况。

#include <bits\stdc++.h>
using namespace std;int a[50005];
int visit[50005];  //visit[sum%n] != 0 说明有一个前缀和相等的,visit[sum%n]即为索引。
int main(){int n; cin >> n;for(int i = 1;i <= n; i++){cin >> a[i];}long long sum = 0;  //前缀和 for(int i = 1;i <= n; i++){sum = (sum + a[i])%n;   //前缀和%n if(sum != 0 && visit[sum] == 0){  visit[sum] = i;    // 不等于0并且没有出现过,存在visit中 }else{//等于0或者有相等的,开始输出结果,并结束程序 cout << i-visit[sum] << endl;for(int j = visit[sum]+1 ;j <= i; j++){
//                cout <<"j:"<<j<<" "<< a[j] << " ";cout << a[j] << endl;}break;}}return 0;
}
//writed by zhangjiuding

51nod 1103 N的倍数 思路:抽屉原理+前缀和相关推荐

  1. N的倍数(抽屉原理)

    一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍数. 例如:N = 8,数组A包括:2 5 6 3 18 7 11 19,可以选2 6,因为2 + 6 = 8,是8的倍数. Input ...

  2. 抽屉原理(鸽巢原理)

    一.抽屉原理初介绍: 桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面至少放两个苹果.这一现象就是我们所说的"抽屉原理". 抽屉原理的一般含 ...

  3. 抽屉原理及其例题应用介绍

    转载自这位大佬!!! 抽屉原理(鸽巢原理)--一定要多做题 介绍一下抽屉原理,又名鸽巢原理,反正它的名字好多的,自己百度吧(ฅ>ω<ฅ)* 由于下面给大家的锻炼思维的题目比较多,想看代码的 ...

  4. 【51Nod - 1103】N的倍数 (思维,鸽巢原理也叫抽屉定理,求倍数问题取模)

    题干: 一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍数. 例如:N = 8,数组A包括:2 5 6 3 18 7 11 19,可以选2 6,因为2 + 6 = 8,是8的倍数. I ...

  5. poj2356(抽屉原理)

    题意:从输入的N个元素中找出是N的倍数的元素并且输出: 因为这个要求的是连续的数之和,先用sum数组求和:sum[1],sum[1]+sum[2],--,sum[1]+sum[2]+--+sum[n] ...

  6. 牛客算法周周练2 B Music Problem(DP,抽屉原理,二进制拆分)

    链接:https://ac.nowcoder.com/acm/contest/5203/B 来源:牛客网 题目描述 Listening to the music is relax, but for o ...

  7. 鸽巢原理(抽屉原理)的详解

    抽屉原理 百科名片 桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放两个苹果.这一现象就是我们所说的"抽屉原理". 抽屉原理的一般含义为: ...

  8. hdu 3303(线段树+抽屉原理)

    解题思路:这题利用了抽屉原理,即1-M之间的所有数与M+1的模都不相同.那么可以利用它将要查找所有区间分成[1,Y-1],[Y,2*Y-1],[2*Y,3*Y-1].........一直下去,直到所有 ...

  9. 抽屉远离在计算机的应用,抽屉原理的应用及其推广优秀毕业论文

    抽屉原理的应用及其推广优秀毕业论文 抽屉原理的应用及其推广 数学与计算机科学学院 数学与应用数学 指导老师: 王美能 摘要:抽屉原理也叫鸽巢原理,是研究如何将元素分类的一个原理,也是组合数学里最简单. ...

最新文章

  1. Visual Studio 2013开发 mini-filter driver step by step 获取可执行文件名称 - 实现process monitor的一个功能 (10)
  2. python第三方插件登录网易音乐_python3-使用requests模拟登录网易云音乐
  3. 四象限法推导lm曲线_IS曲线推导
  4. 【吐血整理】年度盘点 | 2019年Java面试题汇总篇——附答案
  5. 2021高考达州二诊成绩查询,2021二诊成绩怎样换算高考分 分数相差多少
  6. Linux 边角料(一)—— ./ 的含义
  7. Java知识点总结(JavaIO-File类)
  8. NB-IOT物联网模块BC26问题合集
  9. JAVA编程语言基础第六章
  10. 为什么选择WordPress作为企业CMS?
  11. Clouda安装和使用过程详解
  12. pytorch 入门教程 常用知识整理
  13. php apply filters,apply_filters()应用过滤器
  14. Linux监控服务之zabbix
  15. zabbix3.4接入微信报警
  16. vtkPropPicker拾取功能
  17. 什么是lims系统,lims(实验室管理系统)
  18. 安装docker与docker镜像和容器基本的基本操作
  19. 学习倍福BECKHOFF PLC可利用的资源
  20. 数字IP和iP的转化

热门文章

  1. Java黑皮书课后题第9章:9.1 (Rectangle类)遵照9.2节中Circle类的例子,设计一个名为Rectangle的类表示矩形
  2. C语言学习之分别用while、 for双重循环的方式编程绘制如下图形
  3. 中文手机评论情感分类系列(一)
  4. Python 批量处理特定格式文件
  5. 配置 docker0 网桥
  6. TeeChart中 Line的Clear方法
  7. 第二轮冲刺-Runner站立会议03
  8. MySql连接——内连接、外连接(左连接、右连接、全连接)
  9. 来首都初次就医的感受
  10. asp.net出现:当前标识(NT AUTHORITY\NETWORK SERVICE)没有对' '的写访问权限。