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;
        }
    }
  • 相关阅读:
    codeblocks c++11 pthread
    腾讯笔试题目
    Unity3D协程介绍 以及 使用
    Unity手游之路<六>游戏摇杆之Easy Touch 3教程
    Unity3d 换装 之 模型动画分离
    Starling 2D框架简介(一)
    [译林军] 译~CrossBridge 简介
    Flash, Flex, Air, Flashplayer之间的相互关系是什么?
    网络和通信基础知识
    页游安全攻与防,SWF加密和隐藏密匙
  • 原文地址:https://www.cnblogs.com/qscqesze/p/4388297.html
Copyright © 2011-2022 走看看