首页 > 代码库 > Codeforces_492_E
Codeforces_492_E
http://codeforces.com/problemset/problem/492/E
题目规定了gcd=1,可以在纸上模拟一下,发现每一个起点,都会经历过n个点,n个点都是不同行不同列。可以把这n个点归为一组,一共n组。
我们按照纵坐标来编号,然后求出每一组的数量就可以得出答案了。
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#define MAX 1000005using namespace std;int n,m,dx,dy,a[MAX],ans[MAX];int main(){ scanf("%d%d%d%d",&n,&m,&dx,&dy); int x = 0,y = 0; for(int i = 1;i <= n;i++) { a[x] = y; x = (x+dx)%n; y = (y+dy)%n; } int maxa = 0,maxy = 0; for(int i = 1;i <= m;i++) { scanf("%d%d",&x,&y); int temp = y-a[x]; if(temp < 0) temp += n; ans[temp]++; if(ans[temp] > maxa) { maxa = ans[temp]; maxy = temp; } } printf("0 %d\n",maxy); return 0;}
Codeforces_492_E
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。