MGJ4. 投篮游戏
描述
有一个投篮游戏。球场有p个篮筐,编号为0,1...,p-1。每个篮筐下有个袋子,每个袋子最多装一个篮球。有n个篮球,每个球编号xi 。规则是将数字为xi 的篮球投到xi 除p的余数为编号的袋里。若袋里已有篮球则球弹出游戏结束输出i,否则重复至所有球都投完。输出-1。问游戏最终的输出是什么?输入描述
第一行两个整数p,n(2≤p,n≤300)。p为篮筐数,n为篮球数。接着n行为篮球上的数字xi(0≤xi≤1e9)输出描述
输出游戏的结果示例1
输入:
10 5 0 21 53 41 53
输出:
4
C++ 解法, 执行用时: 1ms, 内存消耗: 368KB, 提交时间: 2017-07-29
#include<iostream> #include<vector> using namespace std; int main() { int p,n; int i; while(cin>>p>>n) { vector<int > b(p,0),x(n+1); int r,f=0; for(i=1;i<=n;i++) cin>>x[i]; for(i=1;i<=n;i++) { r=x[i]%p; if(b[r]) { cout<<i<<endl; f=1; break; } else b[r]=1; } if(!f) cout<<-1<<endl; } return 0; }
C++ 解法, 执行用时: 2ms, 内存消耗: 504KB, 提交时间: 2020-10-31
#include<iostream> #include<vector> using namespace std; int main() { int p,n; while(cin>>p>>n) { bool flag=true; int ball[n]; vector<bool> num(p,false); for(int i=0;i<n;i++) { cin>>ball[i]; } for(int i=0;i<n;i++) { if(num[ball[i]%p]) { cout<<i+1<<endl; flag=false; break; } num[ball[i]%p]=true; } if(flag) cout<<-1<<endl; } return 0; }
C 解法, 执行用时: 3ms, 内存消耗: 236KB, 提交时间: 2018-12-29
#include <stdio.h> #include <string.h> int p, n; int xi[301]; char used[301]; int main(int argc, char *argv[]) { int i, j; while(scanf("%d%d", &p, &n) == 2) { for(i = 0; i < n; i++) { scanf("%d", &xi[i]); } for(i = 0; i < n; i++) { j = xi[i] % p; if(used[j] == 0) { used[j] = 1; } else { printf("%d\n", i + 1); break; } } if(i == n || n == 0) { printf("%d\n", -1); } memset(used, 0, sizeof(used)); } return 0; }
C++ 解法, 执行用时: 3ms, 内存消耗: 380KB, 提交时间: 2020-10-31
#include<iostream> #include<vector> using namespace std; int main() { int p,n; while(cin>>p>>n) { bool flag=true; int ball[n]; vector<bool> num(p,false); for(int i=0;i<n;i++) { cin>>ball[i]; } for(int i=0;i<n;i++) { if(num[ball[i]%p]) { cout<<i+1<<endl; flag=false; break; } num[ball[i]%p]=true; } if(flag) cout<<-1<<endl; } return 0; }
C++ 解法, 执行用时: 3ms, 内存消耗: 392KB, 提交时间: 2022-06-28
#include <iostream> #include <vector> using namespace std; int main(){ int p,n; while(cin>>p>>n){ vector<int> f(p,0); int x,y; int count =-1; for(int i=0;i<n;++i){ cin>>x; y = x%p; if(f[y]!=0 && count==-1){ count =i+1; } f[y] = x; } cout<<count<<endl; } }