现场编程比赛普及组初赛答案

问题 A: 光棍节的大穿越
时间限制: 1 Sec 内存限制: 128 MB
提交: 67 解决: 5
[提交][状态][讨论版] [Edit] [TestData]
题目描述
“祝天下有情人都是失散多年的亲兄妹。”
“今年双十一呀,拆散一对是一对。”  

为了让单身狗们有一个不被情侣秀的光棍节,“ACM配基穿(chai)越(san)集团”举行了情侣大穿越活动,在光棍节当天,只要是情侣,只要报名了“情侣大穿越”,可以选择“向前穿越”D天。

为了拆散情侣,男生的向前穿越是穿越到未来,女生的向前穿越是穿越到古代,这样,单身狗们就可以开心了。

已知现在的日期(2015/11/11)和穿越的天数D,聪明的棍儿,你能算出一对情侣男生和女生分别到达的年份和月份吗?

输入
输入首先包含一个整数N,表示有N组测试用例;
接下来N行是N组数据,每一行包含一个整数D***(abs(D)<=10,0000)*,D表示向前穿越的天数。

输出
请计算并输出男友和女友分别到达的日期,日期格式为YYYY/MM/DD,两个日期中间用一个空格隔开,每组数据占一行,具体输出格式请参见样例。

样例输入
1
2
样例输出
2015/11/13 2015/11/09

这一题主要是数据范围,时间是可以有负数的。
原题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=4515

#include<stdio.h>
#include<string.h>
int md[13] = {
  0,31,28,31,30,31,30,31,31,30,31,30,31};

int isLoopYear(int y){
    if((y%4==0&&y%100!=0)||(y%400)==0) return 1;
    else return 0;
}
void getADay(int y, int m, int d,int days){
  //向后推
    int i;
    for(i = 1;i <= days;i++){
  //按照天算比较灵活
        if(isLoopYear(y))
            md[2] = 29;
        else
            md[2] = 28;

        d++;
        if(d > md[m]){
           d = 1;
           m++;
           if(m > 12){
              m=1;
              y++;
           }
        }
    }
    //printf("%d\t%04d/%02d/%02d ",days,y,m,d);
    printf(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值