@Metralix
2016-12-14T17:47:06.000000Z
字数 649
阅读 987
巧妙 贪心
题目大意:
有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");}}}
