[关闭]
@PaulGuan 2016-10-02T11:21:57.000000Z 字数 477 阅读 601

G - Cookies 题解

第一学期第四周 题解


题目大意

有n (1<=n<=100) 堆饼干,每堆饼干各有ai (1<=ai<=100) 个,拿走其中一堆,求解有多少种拿法使剩下的饼干数为偶数。

分析

本题ai范围较小,可以用计数数组进行存放,然后依次假设被取走,进行判断便可。

代码

  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cstring>
  4. int n;
  5. int flag[105];
  6. int ans=0;
  7. using namespace std;
  8. int main(void)
  9. {
  10. memset(flag,0,sizeof(flag));
  11. cin>>n;
  12. int i,j;
  13. for(i=0;i<n;i++)
  14. {
  15. int a;
  16. cin>>a;
  17. flag[a]++;
  18. }
  19. for(i=1;i<=100;i++)
  20. {
  21. if(flag[i])
  22. {
  23. flag[i]--;
  24. int sum=0;
  25. for(j=1;j<=100;j++)
  26. {
  27. sum+=j*flag[j];
  28. }
  29. if(sum%2==0)
  30. ans+=flag[i]+1;
  31. flag[i]++;
  32. }
  33. }
  34. cout<<ans<<endl;
  35. return 0;
  36. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注