SSブログ

AtCoder Regular Contest #002 [コンテスト]

111th.

論理演算子を逆に書かなかったり, 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);
}

nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

AOJ 2190: Angel Stai..AOJ 0564: Bug Party ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。