51nod 1103 N的倍数(抽屉定理)
2017-09-04 17:37
267 查看
题目:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1103
思路:首先明确,输出任意一个答案即可
求mod n的前缀和,然后如果0就是答案,如果没有等于0的,考虑mod n结果只能是1~n-1,所以根据抽屉定理/鸽巢定理
若把n个物体放在n - 1个抽屉中,至少有一个抽屉中放了两个物体
所以肯定有两个相同的前缀和,相减就是结果了
思路:首先明确,输出任意一个答案即可
求mod n的前缀和,然后如果0就是答案,如果没有等于0的,考虑mod n结果只能是1~n-1,所以根据抽屉定理/鸽巢定理
若把n个物体放在n - 1个抽屉中,至少有一个抽屉中放了两个物体
所以肯定有两个相同的前缀和,相减就是结果了
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll a[50005],sum[50005],vis[50005]; int main() { int n; scanf("%d",&n); for(int i = 1;i <= n;i++) scanf("%lld",&a[i]),sum[i] = (sum[i-1]+a[i])%n; int l = 0,r = n; for(int i = 1;i <= n;i++) { if(!sum[i]) { l = 1,r = i; break; } if(vis[sum[i]]) { l = vis[sum[i]]+1,r = i; break; } vis[sum[i]] = i; } printf("%d\n",r-l+1); for(int i = l;i <= r;i++) printf("%d\n",a[i]); return 0; }
相关文章推荐
- 51Nod - 1103 N的倍数 抽屉定理
- 51nod-1103-N的倍数
- 51nod 1103 n的倍数
- 51nod 1103 N的倍数(抽屉原理)
- 51nod 1103 n的倍数
- 51nod 1103 N的倍数 (抽屉原理)
- 51nod 1103:N的倍数 抽屉原理
- 51nod 1103 n的倍数
- 51nod 1103:N的倍数 抽屉原理
- 51NOD 1103 N的倍数(抽屉原理)
- 51Nod 1103 N的倍数
- 【51Nod 1103】N的倍数
- 51nod 1103 N的倍数
- 51nod 1103 n的倍数
- 51nod 1103 N的倍数 (抽屉原理)
- 51nod 1103 N的倍数 (抽屉原理)
- 51nod 1103 N的倍数 思路:抽屉原理+前缀和
- 51nod 1103 n的倍数
- 51nod 1103 N的倍数
- 51nod 1103 n的倍数