HDU水题(3)

1017 A Mathematical Curiosity

水水水,报Presentation Error,貌似是哪里空格和换行不对

#pragma warning(disable:4996)
#include<cstdio>

int main()
{
   int N;
   scanf("%d", &N);
   for (int i = 0; i < N; i++)
   {
       int n, m, val = 1;
       while (scanf("%d%d", &n, &m))
       {
           if (!n && !m)
           {
               printf("\n");
               break;
           }
           int sum = 0;
           for (int a = 2; a < n; a++)
           {
               for (int b = 1; b < a; b++)
               {
                   sum += !((a * a + b * b + m) % (a * b));
               }
           }
           printf("Case %d: %d\n", val++, sum);
       }
   }
}

1020 Encoding

水水水

#pragma warning(disable:4996)
#include<cstdio>
#include<cstring>
using namespace std;

int main()
{
    int val, i = 0;
    scanf("%d", &val);
    while (i++ < val)
    {
        char a[10005];
        scanf("%s", a);
        int len = strlen(a);
        int sum = 0;
        char chr = a[0];
        for (int j = 1; j <= len; j++)
        {
            if (chr == a[j])
                sum++;
            else
            {
                if(sum)
                    printf("%d%c", sum+1, chr);
                else
                    printf("%c", chr);
                chr = a[j];
                sum = 0;
            }
        }
        printf("\n");
    }
}

1021 Fibonacci Again

注意不要写while(scanf(...)),改成while(scanf(...)!=EOF)
以及 &3 比 %4 的执行速度快很多

#pragma warning(disable:4996)
#include<cstdio>


int main()
{
    int val;
    while (scanf("%d",&val)!=EOF)
    {
        if ((val & 3) == 2)
            printf("yes\n");
        else
            printf("no\n");
    }
}

1022 Train Problem I

建立一个<输入字符,输入顺序>的map来处理,不过貌似输入会有重复所以报错了

#pragma warning(disable:4996)
#include<cstdio>
#include<map>


    int val;
    char in[10], out[10];
    int ord[10];
    std::map<char, int> rail;

bool test()
    {
        for (int i = 0; i < val; i++)
        {
            rail[in[i]] = i;
        }
        
        ord[0] = rail[out[0]];
        int mini = ord[0];
        for (int i = 0; i < val - 1; i++)
        {
            if (mini - rail[out[i + 1]] > 1)
            {
                printf("No.\n");
                return false;
            }
            ord[i+1] = rail[out[i+1]];
            if (mini > ord[i + 1])
                mini = ord[i + 1];
        }
        printf("Yes.\n");
        return true;
    }

void prt()
{
    int maxi = -1;
    for (int i = 0; i < val; i++)
    {
        int t = ord[i] - maxi;
        if (t > 0)
        {
            while (t--)
                printf("in\n");
            printf("out\n");
            maxi = ord[i];
        }
        else
            printf("out\n");
    }
}

int main()
{
    while (scanf("%d%s%s", &val, in, out) != EOF)
    {
        if (test())
            prt();
        printf("FINISH\n");
    }
}
发布了17 篇原创文章 · 获赞 0 · 访问量 571

猜你喜欢

转载自blog.csdn.net/kybxdkybxd/article/details/103056475