USTCOJ 1361开灯问题、1362 单词求值、1363 幸福配对

USTCOJ 1361-1363题目比较简单,就不多说了。其中值得留意的是gets函数会读入'\r'(如果有的话),处理方法详见1362。


1361开灯问题:http://acm.ustc.edu.cn/ustcoj/problem.php?id=1361

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

void reverseFlag( char* flag ) 
{
    *flag = (*flag) ? 0 : 1;
}

main()
{
    int n, k;
    while (scanf("%d%d", &n, &k) , n + k)
    {
        int i;
        char flag[1001];
        memset(flag, 1, n + 1);
        for (i = 2; i <= k; i++)
        {
            int t  = i;
            while (t <= n )
            {
                reverseFlag(flag+t);
                t += i;
            }
        }
        printf("1");
        for (i = 2; i <= n; i++)
            if (flag[i])
                printf(" %d", i);
        printf("\n");
    }
    return 0;
}


1362 单词求值:http://acm.ustc.edu.cn/ustcoj/problem.php?id=1362

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

//由于在线评测系统的输入是重定向到文件的,
//当输入文件中换行是"\r\n"时,gets函数会读入'\r'
void strip(char *str)
{
    char *p;
    if ((p = strchr(str, '\r')) != NULL)
        *p = '\0';
}

main()
{
    char str[260] = {0};
    //使用gets函数读入带空格的字符串
    while (gets(str+1), str[1] != '#')
    {
        strip(str);
        int i, sum = 0;
        for (i = 1; str[i]; i++)
        {
            if (str[i] == ' ')
                continue;
            else
                sum += i * (str[i] - 'A' + 1);
        }
        printf("%d\n", sum);
    }
    return 0;
}

1363 幸福配对:http://acm.ustc.edu.cn/ustcoj/problem.php?id=1363

#include <stdio.h>

main()
{
    int T;
    scanf("%d", &T);
    while (T--)
    {
        int n, a, b, c;
        scanf("%d", &n);
        a = b = c = 0;
        while (n--)
        {
            int t;
            scanf("%d", &t);
            switch (t % 3)
            {
            case 0: a++; break;
            case 1: b++; break;
            case 2: c++; break;
            default: break;
            }
        }
        a /= 2;
        b = (b > c) ? c : b;
        printf("%d\n", a + b);
    }
    return 0;
}





你可能感兴趣的:(ACM,1363,1362,ustcoj)