AtCoder Regular Contest #002 [コンテスト]
111th.
論理演算子を逆に書かなかったり, 0初期化の変数を1で初期化しなかったり, ちゃんと貪欲法を書かないと僕みたいにA~Cでそれぞれ1つずつWAしてしまいます.
こういうの気をつけないと...
A.
B.
C.
論理演算子を逆に書かなかったり, 0初期化の変数を1で初期化しなかったり, ちゃんと貪欲法を書かないと僕みたいにA~Cでそれぞれ1つずつWAしてしまいます.
こういうの気をつけないと...
A.
#include <stdio.h> int main(void) { int y; scanf("%d", &y); if (y % 4 == 0 && (y % 100 != 0 || y % 400 == 0)){ printf("YES\n"); } else { printf("NO\n"); } return (0); }
B.
#include <stdio.h> int canDivide(int y, int m, int d) { if (y % m == 0){ y /= m; if (y % d == 0){ return (1); } } return (0); } int isLeap(int y) { return (y % 4 == 0 && (y % 100 != 0 || y % 400 == 0)); } int main(void) { int y, m, d, flag; int table[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; scanf("%d/%d/%d", &y, &m, &d); while (canDivide(y, m, d) == 0){ flag = 0; if (isLeap(y) && m == 2){ flag = 1; } if (table[m - 1] + flag > d){ d++; } else if (table[m - 1] + flag == d){ m++; d = 1; if (m == 13){ m = 1; y++; } } } printf("%d/%02d/%02d\n", y, m, d); return (0); }
C.
#include <stdio.h> #include <string.h> int min(int a, int b) { return (b > a ? a : b); } int simulate(char *str, char *L, char *R) { int i; int ret; i = 0; ret = 0; while (str[i] != '\0'){ if (str[i + 1] == '\0'){ return (++ret); } if (strncmp(&str[i], L, 2) == 0 || strncmp(&str[i], R, 2) == 0){ ret++; i += 2; } else { ret++; i++; } } return (ret); } int main(void) { char cmd[16][4] = {"AA", "BB", "XX", "YY", "AB", "BA", "AX", "XA", "AY", "YA", "BX", "XB", "BY", "YB", "XY", "YX"}; char L[4], R[4]; int n, ans; int i, j; char button[1024]; scanf("%d", &n); ans = n; scanf("%s", button); for (i = 0; i < 16; i++){ for (j = 0; j < 16; j++){ strcpy(L, cmd[i]); strcpy(R, cmd[j]); ans = min(ans, simulate(button, L, R)); } } printf("%d\n", ans); return (0); }
2012-05-02 22:30
nice!(0)
コメント(0)
トラックバック(0)
コメント 0