lightoj1134 Be Efficient
来源:互联网 发布:网络监控机 编辑:程序博客网 时间:2024/05/21 08:37
这道题属于一个思路题,想不到这块的话那就写不出来;
给n个数,问有多少个连续的子段之和能整出某个数m;
可以将这个序列的前缀和求出来,再分别对m取余数,如果同一个余数再次出现的话,那么所加的这段数就是m的倍数;
比如,2 1 4 3;他们的前缀和为2 3 7 10,分别对4取余数,则为2 3 3 2;当3再次出现的时候,意味着所加的这个子段(从前一个余数3到后一个3,也就是4这段)是4的倍数,当2再次出现的时候,意味着所加的这段子段(从前一个余数2到后一个2,也就是1 4 3)是4的倍数;所以一共有两段;
#include<iostream>#include<cstdlib>#include<cstdio>#include<algorithm>#include<cstring>#include<map>#define INF 0x3f3f3f3f#define N 100010using namespace std;int main(){ int i,n,m,t,k,num,sum; long long ans;//ans注意应当用long long类型; int dp[N]; scanf("%d",&t); k=0; while(t--) { scanf("%d%d",&n,&m); memset(dp,0,sizeof(dp)); dp[0]=1;//dp[0]初始化为1,因为如果当前子段刚好能被m整除的话,也是要算上的; sum=0;ans=0; for(i=1;i<=n;i++) { scanf("%d",&num); sum=(sum+num)%m; ans+=dp[sum]; dp[sum]++; } printf("Case %d: %lld\n",++k,ans); } return 0;}
0 0
- lightoj1134 Be Efficient
- LightOJ - 1134 Be Efficient
- lightoj 1134 - Be Efficient
- lightoj-1134-Be Efficient
- LightOJ - 1134 Be Efficient(DP)
- Light oj 1134 - Be Efficient
- Light oj 1134 - Be Efficient(dp)
- Light OJ 1134 Be Efficient(水题)
- lightoj 1134 - Be Efficient DP 思路
- Lightoj1134/poj3844 组合数学
- JOJ 2442: Be efficient 线段树的做法
- 读《Efficient C++》疑惑
- Writing Efficient Testbenches
- Efficient C++(四)
- Efficient Sparse Coding Algorithm
- Efficient maybe the key
- Efficient Sparse Coding Algorithm
- Uva-11020-Efficient Solutions
- JackSon和内部类,是的,你可以使用,但他们必须是静态的内部类
- Python3 - 文件与目录操作
- (28)HTML5-jQuery的Dom操作
- ListView属性
- Java反射-例子
- lightoj1134 Be Efficient
- C++ 内联函数(十一)--inline对比C宏
- 如何解决win10语言栏消失变成空白问题
- js键盘事件_简单抽奖setInterval
- nodejs的版本控制
- 实验楼Linux学习笔记(二)之用户及文件权限管理
- 并发编程、iOS多线程
- VR的原理和实现
- js-迭代器值同步变量迭代器