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;
    }
}
原文地址:https://www.cnblogs.com/qscqesze/p/4388297.html