有一个投篮游戏。球场有p个篮筐,编号为0,1...,p-1。每个篮筐下有个袋子,每个袋子最多装一个篮球。有n个篮球,每个球编号xi 。规则是将数字为xi 的篮球投到xi 除p的余数为编号的袋里。若袋里已有篮球则球弹出游戏结束输出i,否则重复至所有球都投完。输出-1。问游戏最终的输出是什么?

// ConsoleApplication5.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<vector>
#include<iostream>
#include<string>
#include <stack>
#include<algorithm>
using namespace std;


int main()
{
	int p,n;
	while (cin >> p>>n)
	{
		if (n == 0 || p == 0)
		{
			cout << -1 << endl;
			break;
		}
		vector<int> basketballs;
		vector<int> basket;
		for (int i = 0; i < n; i++)
		{
			int num;
			cin >> num;
			basketballs.push_back(num);
		}

		for (int i = 0; i < p; i++)
		{
			basket.push_back(0);
		}

		int flag = -1;
		for (int i = 0; i < n; i++)
		{
			if (basket[basketballs[i]%p] != 0)
			{
				flag = i;
				break;
			}
			else
			{
				basket[basketballs[i]%p] = 1;
			}
			
		}
		if (flag == -1)
		{
			cout << -1;
		}
		else
		{
			cout << flag + 1 << endl;
		}
		

	}

	

return 0;
}
原文地址:https://www.cnblogs.com/wdan2016/p/6515906.html