//大数求余数
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int m;
int n;
int a[101];
int b[1001];
cin >> m;
cin >> n;
int i;
int j;
int count = 0;//
int max1;
int max2=0;
int min=m*n;
for (i = 1; i <= n; i++)
{
cin >> a[i];
}
count = 1;
for (i = 1; i <= 1000; i++)
{
int flag = 0;
for (j = 1; j <= n; j++)
{
if (a[j] == i)
flag = 1;
}
if (flag == 0)
b[count++] = i;
}
sort(a+1,a+n+1);
max1 =n;
max2 = n * m - n;
i = 1;
j = 1;
count = 0;
while (1)
{
int flag = 0;
for (j; j <= max2; j++)
{
if (b[j] > a[i])
{
flag = 1;
break;
}
}
if (flag == 0) break;
i++;
j++;
count++;
}
cout << n-count;
}
田忌赛马问题
将我方卡片设为数组a
敌方卡片设为数组b
从我的最小数开始,敌方拿出一个比我这个最小数大的一个最小的数(未被使用过的)
这两个数进行比赛,结果当然是我输。count++代表输了。
接着开始取下一个数。
直到对方没有数比我的大
count代表我最大输的次数
故n-count为我最少赢的次数