• SDNU 1203.小明的生日(水题)


    Description

    小明对生日十分看重,因为他可以得到祝福,可以和朋友亲人一起分享快乐,可以为自己的人生做一次总结,并且...能够收到好多礼物!
    不过小明是个神秘的人,不会轻易告诉你他的生日,现在他想到一个办法,让你去猜他的生日是哪一天。

    小明会告诉你如下三个信息:

    1. 出生月份和出生日子的最大公约数;
    2. 出生月份和出生日子的最小公倍数;
    3. 出生年份;

    现在要求你猜出小明的生日。

    Input

    第一行输入一个正整数T,表示总共有T组册数数据(T <= 200);
    对于每组数据依次输入三个数x,y,z,
    x表示出生月份和出生日子的最大公约数(1<= x <=1000);
    y表示出生月份和出生日子的最小公倍数(1<= y <=1000);
    z表示出生年份(1900 <= z <= 2013)。
    每组输入数据占一行。

    Output

    对于每组数据,先输出Case数。
    如果答案不存在 ,输出“-1”;
    如果答案存在但不唯一 ,输出“1”;
    如果答案唯一,输出生日,日期格式为YYYY/MM/DD;
    每组输出占一行,具体输出格式参见样例。

    Sample Input

    3
    12 24 1992
    3 70 1999
    9 18 1999
    

    Sample Output

    Case #1: 1992/12/24
    Case #2: -1
    Case #3: 1999/09/18
    

    Hint

    水题

    Source

    Unknown
    #include <cstdio>
    #include <iostream>
    #include <cmath>
    #include <string>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <map>
    using namespace std;
    #define ll long long
    
    int t, x, y, z, f[100][100], mi[100][100];
    
    int gcd(int a, int b)
    {
        if(a%b == 0)return b;
        return gcd(b, a%b);
    }
    
    void init()
    {
        for(int m = 1; m <= 12; m++)
            for(int r = 1; r <= 31; r++)
                {
                    f[m][r] = gcd(m, r);
                    mi[m][r] = m*r/f[m][r];//最小公倍数 = 两数的乘积 / 最大公约数
                }
    }
    
    int main()
    {
        memset(f, 0, sizeof(f));
        memset(mi, 0, sizeof(mi));
        init();
        scanf("%d", &t);
        int miao = t;
        while(t--)
        {
            int sum = 0, mm, rr;
            int mon[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
            scanf("%d%d%d", &x, &y, &z);
            if((z%4 == 0 && z%100 != 0) || z%400 == 0)mon[2] = 29;
            for(int m = 1; m <= 12; m++)
            {
                for(int r = 1; r <= mon[m]; r++)
                {
                    if(f[m][r] == x && mi[m][r] == y)
                    {
                        sum++;
                        mm = m;
                        rr = r;
                    }
                }
            }
            if(!sum)printf("Case #%d: -1
    ", miao-t);
            else if(sum>1)printf("Case #%d: 1
    ",miao-t);
            else if(sum == 1)
            {
                char sign = '0';
                printf("Case #%d: %d/", miao-t, z);
                if(mm/10%10 == 0)printf("%c%d/", sign, mm);
                else printf("%d/", mm);
                if(rr/10%10 == 0)printf("%c%d
    ", sign, rr);
                else printf("%d
    ", rr);
            }
        }
        return 0;
    }
  • 相关阅读:
    java学习疑问
    HTTP method GET is not supported by this URL
    详解ListView分页(带图片)显示用法案例
    MySQL 字段数据类型/长度
    getRequestDispatcher()与sendRedirect()的区别
    Codeforces Round #754 (Div. 2) D,E 题解
    CCPC2019 Harbin Site B.Binary Numbers
    2020 EC Final D. City Brain
    [USACO15JAN]Grass Cownoisseur G
    CF1295F Good Contest
  • 原文地址:https://www.cnblogs.com/RootVount/p/10990897.html
Copyright © 2020-2023  润新知