浙江理工2016新生赛 E 校庆

2017年10月28日是zstu的120周年校庆,撒花,撒花。为此KI决定设计一个程序,来庆祝我们的校庆:
   给出某一天的日期year-month-date, 求这一天到2017-10-28还差几天。

Input

第一行有个整数T, 表示测试组数。T≦100。
接下来每个测试组,给出三个数year month date。(1900 <=year <=2017 ), 保证每个日期均合法,并且小于2017-10-28。

Output

对于每个测试组,请输出对应的答案。

Sample Input

1
2017 10 1

Sample Output

27
思路:如果不是2017年,就先算从他的下一年开始算,把整年的天数算完,例如,2015年10月1号,先把2016~2017这一年的天数算完,再把10月1号~2015年12月31号的算完,最后加上20171.1~201710.28就行了。

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
  int t;
  int y,m,d;
  int i,ys,ms,ds,sum;
  int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};
  scanf("%d",&t);
  while(t--)
  {
    ys=ms=ds=0;
    sum=
    scanf("%d%d%d",&y,&m,&d);
    if(y<2017)
    {
       for(i=y+1;i<2017;i++)
      {
      if((i%4==0)&&(i%100!=0)||(i%400==0))
        ys+=366;
      else
        ys+=365;
      }
      for(i=m+1;i<=12;i++)
      {
        ms+=b[i-1];
        if((y%4==0)&&(y%100!=0)||(y%400==0))
         ms+1;
      }
      for(i=d+1;i<=b[m-1];i++)
      {
        ds+=1;
      }
      if(((y%4==0)&&(y%100!=0)||(y%400==0))&&m==2)
           ds+=1;


      sum=ys+ms+ds+301;
    }
     else
     {
       for(i=m+1;i<10;i++)
        ms+=b[i-1];
        if(m!=10)
        {
            for(i=d+1;i<=b[m-1];i++)
            ds+=1;
        }
        else
            ds=28-d;
        sum=ms+ds;
     }
    printf("%d\n",sum);
  }
}

















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值