hdu 1201

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1201

hint:关键是判断是不是闰年的2月29日!!!

#include <iostream>
#include <cstdio>
using namespace std;
bool run(int year)
{
    if(year % 400 ==0 ||(year % 4 ==0 && year %100!=0))
    return 1;
    return 0;
}
int main()
{
    int t,y,m,d;
    cin>>t;
    while(t--)
    {
        scanf("%d-%d-%d",&y,&m,&d);
        if(m == 2 && d == 29)
        {
            puts("-1");
            continue;
        }
        int sum=0;
        for(int i=1; i<=18; i++)
        {
            if(run(y+i))
                sum+=366;
            else
                sum+=365;
        }
        if(run(y) && m<=2)
            sum++;
        if(run(y+18) && m<=2)
            sum--;
        cout<<sum<<endl;
    }
    return 0;
}
时间: 2024-08-09 18:26:09

hdu 1201的相关文章

hdu 1201 18岁生日 (简单题)

18岁生日 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 18281    Accepted Submission(s): 5776 Problem Description Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他

hdu 1201 18岁生日

#include <stdio.h> int r(int y) { return (y%4==0&&y%100!=0)||(y%400==0); } int f(int y,int m,int d) { int i,cou=0; if((!r(y+18))&&m==2&&d==29)return -1; if(m>=3) { for(i=1; i<=18; i++) if(r(y+i)==1)cou++; } else { for(i

NYOJ 312 &amp;&amp; HDU 1201 过生日(日期计算)

链接:click here 题意: 描述 路过这的20岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达20岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从出生到达20岁生日所经过的总天数,让他好来比较一下. 输入 一个数T,后面T行每行有一个日期,格式是YYYY-MM-DD.如我的生日是1988-03-07. 输出 T行,每行一个数,表示此人从出生到20岁生日所经过的天数.如果这个人没有20岁生日,就输出-1. 样

HDU 1201 Fibonacci Again

Fibonacci Again Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 37229    Accepted Submission(s): 17970 Problem Description There are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n)

POJ 1201 &amp;&amp; HDU 1384 Intervals(差分约束系统)

题目地址:POJ 1201   HDU 1384 根据题目意思,可以列出不等式如下: Sj-Si>=c; Si-S(i-1)>=0; S(i-1)-Si>=-1; 然后用最短路spfa来解决这个不等式.用max来当源点,0为终点.最终的-d[0]就是答案. 代码如下: #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <

POJ 1201 &amp;amp;&amp;amp; HDU 1384 Intervals(差动制动系统)

职务地址:POJ 1201   HDU 1384 依据题目意思.能够列出不等式例如以下: Sj-Si>=c; Si-S(i-1)>=0; S(i-1)-Si>=-1; 然后用最短路spfa来解决这个不等式. 用max来当源点,0为终点. 终于的-d[0]就是答案. 代码例如以下: #include <iostream> #include <cstdio> #include <string> #include <cstring> #inclu

(HDU)1201 -- 18岁生日

题目链接:http://vjudge.net/problem/HDU-1201 分析:这个题目要注意的是输出-1是指这个人的生日在某个闰年的2月29日,那他只能过4的倍数的生日. 还有一点要注意他的生日日期是在2月及以前还是3月及以后,这个和计算的起始年份有关. 如果他的生日在1.2月,那么就以当前年为起始年份,如果今年是闰年就要加一了: 如果他的生日在3月及以后,当前年是不是闰年没有影响,下一年作为起始年份考虑. 然后循环分析18年是不是闰年... 1 #include <cstdio> 2

HDU ACM 1201 18岁生日

计算方法: <1>.将出生年经过的天数与18岁那年经过的天数加在一起算作一年. <2>.不算闰年,则18年共度过18*365天. <3>.考虑闰年,出生年与18岁生日合在一起那年单独考虑,其他年份只要是闰年,总天数加1天即可. <4>.单独考虑合在一起年份,若出生年是闰年,且在2月29日之前出生,那么他(她)必定经过2月29日这天,总天数加1:对于18岁那年,若是闰年,且在2月28日之后出生的,他(她)同样经过2月29这天,总天数加1. #include&l

图论 500题——主要为hdu/poj/zoj

转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并查集======================================[HDU]1213   How Many Tables   基础并查集★1272   小希的迷宫   基础并查集★1325&&poj1308  Is It A Tree?   基础并查集★1856   More i