Game with Pearls
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5090
解题思路:
贪心: 将N个管子按管子中的珍珠数量升序排序,则满足条件的时候第i个管子应该有i个珍珠。
每个管子开始遍历,如果第i个管子有i个珍珠,则进行下一次循环;
如果小于i个珍珠,则加上k个珍珠,重新按升序排序;
如果大于i个珍珠,则说明不满足条件 .
AC代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
int T,a[110];
scanf("%d",&T);
while(T--){
int i,n,k,flag = 1;
scanf("%d%d",&n,&k);
for(i = 1; i <= n; i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
for(i = 1; i <= n; i++){
if(a[i] == i)
continue;
else{
while(a[i] < i){
a[i] += k;
sort(a+i,a+n+1);
if(a[i] == i)
break;
}
if(a[i] == i)
continue;
else{
flag = 0;
break;
}
}
}
if(flag)
printf("Jerry\n");
else
printf("Tom\n");
}
return 0;
}