@Metralix
2016-12-15T01:47:06.000000Z
字数 649
阅读 839
巧妙
贪心
题目大意:
有n个盒子,给你盒子初始各有几个豆子,每次可以在一个篮子里放k个豆子,问可能不可能放若干次后,有1个豆子,2个豆子。。。。。n-1个豆子,n个豆子的篮子各有一个。问你行不行。
解题思路:
范围只有100,只能用下标运算,对于某个值x,如果出现超过一次,那么肯定只留一个,剩下全部去加k,因为不知道到底要加几次k才好,所以先加1次k到达x+k,如果多了在去加k。
AC代码:
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
int a[1000],b[1000];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m;
memset(b,0,sizeof(b));
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
int sum;
int sum1;
int p=0;
for(int i=1;i<=n;i++)
{
sum1=0;
sum=0;
for(int j=1;j<=n;j++)
{
if((i-a[j])%m==0&&(i-a[j])>=0&&a[j]!=-1&&sum==0)
{
a[j]=-1;
}
}
if(sum==1)
{
continue;
}
else
{
p=1;
}
}
if(p==0)
{
printf("Jerry\n");
}
else
{
printf("Tom\n");
}
}
}