首页 > 代码库 > HDU - 4422-The Little Girl who Picks Mushrooms

HDU - 4422-The Little Girl who Picks Mushrooms

题目链接:https://vjudge.net/problem/HDU-4422

题目大意:

自行百度

题目分析:

当n<=3的时候,易得可以得到的最多的蘑菇是1024。

当n>3时,可以进行分类讨论。

注意有两个莫名奇妙的毒点:

1.我用取模WA而用while不断相减AC

2.三个相加等于零的情况也可以通过

给出代码:

技术分享
 1 #include <cstdio>
 2 #include <iostream>
 3 #include <string>
 4 #include <set>
 5 #include <cmath>
 6 #include <algorithm>
 7 #include <cstring>
 8 #include <vector>
 9 using namespace std;
10 int num[10];
11 int main()
12 {
13     int n;
14     while(cin>>n)
15     {
16         int sum=0;
17         for(int i=0;i<n;i++)
18         {
19             scanf("%d",&num[i]);
20             sum+=num[i];
21         }
22         if(n<=3)
23             cout<<1024<<endl;
24         else
25         {
26             if(n==4)
27             {
28                 int flag=1;
29                 for(int i=0;i<n;i++)
30                 {
31                     int t=sum-num[i];
32                     if(t%1024==0)
33                     {
34                         cout<<1024<<endl;
35                         flag=0;
36                         break;
37                     }
38                 }
39                 if(flag)
40                 {
41                     int maxn=0;
42                     for(int i=0;i<n;i++)
43                     {
44                         for(int j=i+1;j<n;j++)
45                         {
46                             int t=num[i]+num[j];
47                             while(t>1024)
48                                 t-=1024;
49                             maxn=max(maxn,t);
50                         }
51                     }
52                     cout<<maxn<<endl;
53                 }
54             }
55             if(n==5)
56             {
57                 int maxn=0;
58                 for(int i=0;i<n;i++)
59                 {
60                     for(int j=i+1;j<n;j++)
61                     {
62                         for(int k=j+1;k<n;k++)
63                         {
64                             int t=num[i]+num[j]+num[k];
65                             if(t%1024==0)
66                             {
67                                 int tt=sum-t;
68                                 while(tt>1024)
69                                         tt-=1024;
70                                 maxn=max(tt,maxn);
71                             }
72                         }
73                     }
74                 }
75                 cout<<maxn<<endl;
76             }
77         }
78     }
79     return 0;
80 }
View Code

 

HDU - 4422-The Little Girl who Picks Mushrooms