codeforces

题目:http://codeforces.com/contest/250/problem/A

简单题目

View Code
 1 int main()
 2 {
 3     int i,j;
 4     int n;
 5     int a[110];
 6     int tnum[110];
 7     while(scanf("%d",&n) != EOF)
 8     {
 9         _clr(tnum,0);
10         for(i = 0; i < n; i++)
11         scanf("%d",&a[i]);
12         int sum = 0;
13         int tsum = 0;
14         int k = 0;
15         for(i = 0; i < n; i++)
16         {
17             if(a[i] < 0) sum ++;
18             tsum ++;
19             if(sum == 3)
20             {
21                 //cout<<"i = "<<i<<endl;
22                 tnum[k++] = tsum - 1;
23                 tsum = 0;
24                 sum = 0;
25                 i --;
26             }
27         }
28         tnum[k ++] = tsum;
29         printf("%d\n",k);
30         printf("%d",tnum[0]);
31         for(i = 1; i < k; i++)
32         printf(" %d",tnum[i]);
33         cout<<endl;
34     }
35     return 0;
36 }

题目:http://codeforces.com/contest/250/problem/B

字符串的处理题目,写的好纠结。先是处理那些两个':'中间那些不够四个的补零,然后如果是两个':',则保留不做处理,最后补零

View Code
 1 const int N = 50;
 2 int main()
 3 {
 4     char str[N];
 5     char sbr[N];
 6     int n,i,j;
 7     //freopen("data.txt","r",stdin);
 8     scanf("%d",&n);
 9     getchar();
10     while(n--)
11     {
12         _clr(str,0);
13         _clr(sbr,0);
14         int num = 0;
15         cin>>str;
16         //gets(str);
17         //puts(str);
18         if(strlen(str) == 2)
19         {
20             printf("0000:0000:0000:0000:0000:0000:0000:0000\n");
21             continue;
22         }
23         int len = strlen(str);
24         for(i = 0; i < len; i++)
25         {
26             if(str[i] == ':') num ++;
27         }
28         if(num == 8 && str[0] == ':' && str[1] == ':')
29         {
30             str[0] = '0';
31         }
32 
33         if(len == 39)
34         {
35             printf("%s\n",str);
36             continue;
37         }
38         int sum = 0;
39         int k = 0;
40         int temp;
41         for(i = 0; i < len; i++)
42         {
43             if(str[i] != ':')
44             {
45                 sum ++;
46             }
47             else if(str[i - 1] != ':')
48             {
49                 temp = 4 - sum;
50                 while(temp --) sbr[k ++] = '0';
51                 for(j = i - sum; j <= i; j++) sbr[k ++] = str[j];
52                 sum = 0;
53             }
54             else {sbr[k ++] = ':';sum = 0;}
55         }
56         if(k == 36 && sbr[k - 1] == ':' && sbr[k - 2] == ':')
57         {
58             for(i = 0; i < k - 1; i++)
59                 printf("%c",sbr[i]);
60             for(i = 0; i < 4; i++) printf("0");
61             printf("\n");
62             continue;
63         }
64         if(sum)
65         {
66             temp = 4 - sum;
67             while(temp --) sbr[k++] = '0';
68             for(j = i - sum; j < i; j++) sbr[k ++] = str[j];
69         }
70     //cout<<"sbr = "<<sbr<<endl;
71         //cout<<"sum = "<<k<<endl;
72         temp = 39 - k;
73         if(sbr[k - 2] == ':' && sbr[k - 1] == ':') temp ++;
74         for(i = 0; i < k; i++)
75         {
76             if(sbr[i] == ':' && sbr[i + 1] == ':')
77             {
78                 printf("%c",sbr[i]);
79                 for(j = 1; j <= temp; j++)
80                 {
81                     if(j && j % 5 == 0) printf(":");
82                     else printf("0");
83                 }
84                 i++;
85                 if(i != (k - 1)) printf(":");
86             }
87             else printf("%c",sbr[i]);
88         }
89         cout<<endl;
90 
91     }
92     return 0;
93 }
posted @ 2012-11-30 21:29  AC_Girl  阅读(232)  评论(1编辑  收藏  举报