• UVA 11947 Cancer or Scorpio 水题


    Cancer or Scorpio

    Time Limit: 1 Sec  Memory Limit: 256 MB

    题目连接

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3098

    Description

    Alice and Michael is a young couple who are planning on having their first child. Their wish their son Nelson was born on a special date for both of them.

    Alice has investigated in the internet and has found that the period of gestation is forty weeks. These forty weeks begin to count on the first day of the last menstrual cycle.

    Michael is passionate about astrology and even more about the zodiac signs, he has asked Alice to investigate the range of dates that correspond to each sign.

    Sign Begin End
    Aquarius January, 21 February, 19
    Pisces February, 20 March, 20
    Aries March, 21 April, 20
    Taurus April, 21 May, 21
    Gemini May, 22 June, 21
    Cancer June, 22 July, 22
    Leo July, 23 August, 21
    Virgo August, 22 September, 23
    Libra September, 24 October, 23
    Scorpio October, 24 November, 22
    Sagittarius November, 23 December, 22
    Capricorn December, 23 January, 20


    Alice and Michael ask for help to calculate the date of birth of their son Nelson and his zodiac sign.

    Input

    The first line of input contains a single integer N, ( 1$ le$N$ le$1000) which is the number of datasets that follow.

    Each dataset consists of a single line of input that contains only eight digits that represent the date of the first day of the last menstrual cycle in format MMDDYYYY.


    Output

    For each dataset, you should generate one line of output with the following values: The dataset number as a decimal integer (start counting at one), a space, the date of birth in format MM/DD/YYYY, a space, and the name (in lowercase) of zodiac sign that correspond according to the date of birth.


    Note: Considers leap years.


    Sample Input

    2 
    01232009 
    01232008

    Sample Output

    1 10/30/2009 scorpio 2 10/29/2008 scorpio

    HINT

    题意

            啊,有个妹子怀孕了,怀孕40周,然后问你这个孩子什么时候出生,出生后的星座是啥

    题解:

      啊,这个40周是什么鬼啊,我跑了一下样例,发现应该是271天,于是我就改成271,结果一发就交过了……

    这道题真是迷啊

    代码:

    //qscqesze
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <ctime>
    #include <iostream>
    #include <algorithm>
    #include <set>
    #include <vector>
    #include <sstream>
    #include <queue>
    #include <typeinfo>
    #include <fstream>
    #include <map>
    typedef long long ll;
    using namespace std;
    //freopen("D.in","r",stdin);
    //freopen("D.out","w",stdout);
    #define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
    #define maxn 200001
    #define mod 10007
    #define eps 1e-9
    //const int inf=0x7fffffff;   //无限大
    const int inf=0x3f3f3f3f;
    /*
    
    */
    //**************************************************************************************
    inline ll read()
    {
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    int buf[10];
    inline void write(int i) {
      int p = 0;if(i == 0) p++;
      else while(i) {buf[p++] = i % 10;i /= 10;}
      for(int j = p-1; j >=0; j--) putchar('0' + buf[j]);
      printf("
    ");
    }
    
    int month[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
    int month1[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int check_year(int x)
    {
        if(x%400==0)
            return 1;
        if(x%4==0&&x%100!=0)
            return 1;
        return 0;
    }
    string check(int x,int y)
    {
        string ans;
        if(x==1)
        {
            if(y<=20)
            {
                ans="capricorn";
                return ans;
            }
            else
            {
                ans="aquarius";
                return ans;
            }
        }
        else if(x==2)
        {
            if(y<=19)
            {
                ans="aquarius";
                return ans;
            }
            else
            {
                ans="pisces";
                return ans;
            }
        }
        else if(x==3)
        {
            if(y<=20)
            {
                ans="pisces";
                return ans;
            }
            else
            {
                ans="aries";
                return ans;
            }
        }
        else if(x==4)
        {
            if(y<=20)
            {
                ans="aries";
                return ans;
            }
            else
            {
                ans="taurus";
                return ans;
            }
        }
        else if(x==5)
        {
            if(y<=21)
            {
                ans="taurus";
                return ans;
            }
            else
            {
                ans="gemini";
                return ans;
            }
        }
        else if(x==6)
        {
            if(y<=21)
            {
                ans="gemini";
                return ans;
            }
            else
            {
                ans="cancer";
                return ans;
            }
        }
        else if(x==7)
        {
            if(y<=22)
            {
                ans="cancer";
                return ans;
            }
            else
            {
                ans="leo";
                return ans;
            }
        }
        else if(x==8)
        {
            if(y<=21)
            {
                ans="leo";
                return ans;
            }
            else
            {
                ans="virgo";
                return ans;
            }
        }
        else if(x==9)
        {
            if(y<=23)
            {
                ans="virgo";
                return ans;
            }
            else
            {
                ans="libra";
                return ans;
            }
        }
        else if(x==10)
        {
            if(y<=23)
            {
                ans="libra";
                return ans;
            }
            else
            {
                ans="scorpio";
                return ans;
            }
        }
        else if(x==11)
        {
            if(y<=22)
            {
                ans="scorpio";
                return ans;
            }
            else
            {
                ans="sagittarius";
                return ans;
            }
        }
        else if(x==12)
        {
            if(y<=22)
            {
                ans="sagittarius";
                return ans;
            }
            else
            {
                ans="capricorn";
                return ans;
            }
        }
    }
    int main()
    {
        int t=read();
        for(int cas=1;cas<=t;cas++)
        {
            string s;
            cin>>s;
            char ch;
            int day=0,mon=0,ye=0;
            ch=s[0];
            mon+=ch-'0';
            ch=s[1];
            mon=mon*10+ch-'0';
    
            ch=s[2];
            day+=ch-'0';
            ch=s[3];
            day=day*10+ch-'0';
    
            ch=s[4];
            ye+=ch-'0';
            ch=s[5];
            ye=ye*10+ch-'0';
            ch=s[6];
            ye=ye*10+ch-'0';
            ch=s[7];
            ye=ye*10+ch-'0';
    
            int now=0;
            while(now<271)
            {
                now++;
                day++;
                //cout<<mon<<" "<<day<<" "<<ye<<" "<<now<<endl;
                if(check_year(ye))
                {
                    if(day>=month[mon])
                    {
                        day=1;
                        mon++;
                        if(mon>12)
                        {
                            mon=1;
                            ye++;
                        }
                    }
                }
                else
                {
                    if(day>=month1[mon])
                    {
                        day=1;
                        mon++;
                        if(mon>12)
                        {
                            mon=1;
                            ye++;
                        }
                    }
                }
            }
            if(mon<10)
                cout<<cas<<" 0"<<mon;
            else
                cout<<cas<<" "<<mon;
            if(day<10)
                cout<<"/0"<<day<<"/"<<ye<<" "<<check(mon,day)<<endl;
            else
                cout<<"/"<<day<<"/"<<ye<<" "<<check(mon,day)<<endl;
        }
    }
  • 相关阅读:
    【PHP】算法: 获取满足给定值的最优组合
    @程序员,你还记得当年高考时的样子吗?
    教妹学 Java:难以驾驭的多线程
    二十九岁,刚读完了财富启蒙读物《小狗钱钱》
    蓦然回首,Java 已经 24 岁了!
    @程序员,你需要点金融常识
    教妹学 Java:大有可为的集合
    @程序员,你需要点财商
    教妹学 Java:晦涩难懂的泛型
    大量阅读,并不等同于“走马观花”
  • 原文地址:https://www.cnblogs.com/qscqesze/p/4388297.html
Copyright © 2020-2023  润新知