您的位置:首页 > 其它

CodeForces#211(Div.2) - A,B,C

2013-11-12 19:54 375 查看
A题,模拟算盘,直接模拟输出

AC代码:

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <algorithm>

using namespace std;

int main() {
int n;
while(~scanf("%d", &n)) {
if(n == 0) {
puts("O-|-OOOO");
goto a;
}
else {
for( ; n; n /= 10) {
int k = n % 10;
if(k >= 5) {
k -= 5;
printf("-O|");
}
else printf("O-|");
for(int i = 0; i < k; ++i)
printf("O");
printf("-");
for(int i = k; i != 4; ++i)
printf("O");
puts("");
}
}
a: ;
}
return 0;
}


B题,给出一串长为n的数列,求使连续k个数字的加和为最小的起点。

AC代码:

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <algorithm>

using namespace std;

const int MAXN = 15 * 10000 + 10;

int h[MAXN];

int main() {
int n, k;
while(~scanf("%d%d", &n, &k)) {
int a, sum = 0;
memset(h, 0, sizeof(h));
for(int i = 0; i < k; i++) {
scanf("%d", &a);
h[i] = a;
sum += a;
}
int Min = sum, ansk = k - 1;
for(int i = k; i < n; i++) {
scanf("%d", &a);
h[i] = a;
sum = sum + a - h[i - k];
if(sum < Min) ansk = i;
}
printf("%d\n", ansk - k + 2);
}
return 0;
}


C题,给出一字符串,要求字符串中不得出现连续三个相同字母(aaa),也不能出现两组连续两个相同字母(aabb),要求对原字符串进行删除,使所删字母最少并能达到要求,最后输出删改完的字符串。

AC代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <algorithm>

using namespace std;

const int LEN = 200000 + 5;

char s[LEN];

int main(){
gets(s);
int n = 0;
for(int i = 0; s[i]; i++){
if(n >= 2 && s[n-2] == s[n-1] && s[n-1] == s[i]) continue;
if(n >= 3 && s[n-3] == s[n-2] && s[n-1] == s[i]) continue;
s[n++] = s[i];
}
s
= 0;
puts(s);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: