Codeforces Round #131(Div. 2)

   表示水出A和B,C没看懂,E看懂了以前貌似还见过不会做,CE应该都是DP。。。唉,DP,啊。。。。A题3分钟,B题卡了错了4次,很多2B错误。。把trick都想清楚了,这个基本属于乱搞题了。。。43分钟做出5Y了第二个,还用这个题,查了3个,挂了4个。。。赚了,然后就是围观,别的题。。。话说,rating大张啊,变蓝了。。。

A题 水。。。

#include <stdio.h>
#include <string.h>
int main()
{
    int i,j,n,m,z = 0;
    scanf("%d%d",&n,&m);
    for(i = 0;i <= 100;i ++)
    for(j = 0;j <= 100;j ++)
    {
        if(i*i+j == n&&i+j*j == m)
        z ++;
    }
    printf("%d\n",z);
    return 0;
}

B题:题意给你一些数,找出一个最大的被 2  3  5 都整除。

乱搞方法:分析一下,可以知道一定被30整除,所以最后一个数必须是0.搞一下判断。从大到小排序,如果整除3,输出,如果不整除,就有两种情况,1和2,从低位开始先找到是否有一个数,对3取余和  sum%3相等,如果没找到,再找是否两个数取余 !=0且!=sum%3,存在 就删了两个。最后注意一下前导0(这就是查3次成功数据)。。。

唉,错了4次,啥也不说了。。。

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 int cmp(const void *a,const void *b)
 5 {
 6     return *(int *)b-*(int *)a;
 7 }
 8 int p[100001],o[100001];
 9 int main()
10 {
11     int i,j,n,m,z = 0,sum = 0,y = 1;
12     scanf("%d",&n);
13     for(i = 0; i <= n-1; i ++)
14     {
15         scanf("%d",&p[i]);
16         if(p[i] == 0)
17             z = 1;
18         sum += p[i];
19     }
20     qsort(p,n,sizeof(p[0]),cmp);
21     if(!z)
22         printf("-1\n");
23     else
24     {
25         if(sum % 3 != 0)
26         {
27             for(i = n-1; i >= 0; i --)
28             {
29                 if(p[i] % 3 == sum % 3)
30                 {
31                     o[i] = 1;
32                     break;
33                 }
34             }
35             j = 0;
36             if(i == -1)
37             {
38                 for(i = n-1; i >= 0; i --)
39                 {
40                     if(p[i]%3 != 0&&p[i] % 3 != sum % 3)
41                     {
42                         o[i] = 1;
43                         j ++;
44                     }
45                     if(j == 2)
46                         break;
47                 }
48                 if(j < 2)
49                 {
50                     printf("-1\n");
51                     y = 0;
52                 }
53             }
54         }
55         if(y)
56         {
57             z = 0;
58             for(i = 0; i <= n-1; i ++)
59             {
60                 if(!o[i])
61                 {
62                     if(p[i] != 0)
63                         z = 1;
64                     if(z)
65                         printf("%d",p[i]);
66                 }
67             }
68             if(!z)
69             printf("0");
70             printf("\n");
71         }
72     }
73     return 0;
74 }
posted @ 2012-07-31 09:48  Naix_x  阅读(195)  评论(0编辑  收藏  举报