zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    Python-属性描叙符协议ORM实现原理依据- __set__ __get__ __delete__
    Python-类属性查询协议-__getattr__ __getattribute__
    Python-__init__ 和 __new__区别和原理
    Python-在不在判断 in 和 in判断协议- in __contains__
    Python-求序列长度和序列长度协议-len() __len__
    Python-序列反转和序列反转协议-reversed __reversed__
    Python-序列切片原理和切片协议-[start:end:step] __getitem__
    Python-序列常用方法 + * += extend append方法区别
    Python其他数据结构collection模块-namtuple defaultdict deque Queue Counter OrderDict arrary
    Python-函数式编程-map reduce filter lambda 三元表达式 闭包
  • 原文地址:https://www.cnblogs.com/qscqesze/p/4388297.html
Copyright © 2011-2022 走看看