HDU 1076 An Easy Task

来源:互联网 发布:python基础教程 微盘 编辑:程序博客网 时间:2024/04/30 01:56

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

题       意:给你一个年份,找到从他开始的第n个闰年。

思       路:

                1.此题暴力可过。

 代码如下:

#include <iostream>using namespace std;#include <string.h>#include <stdio.h>#include <cmath>#include <algorithm>int main(){    int T;    scanf ( "%d",&T );    while( T-- )    {        int y,n;        scanf ( "%d %d", &y, &n );        while(1)        {            if(( y %4==0&&y%100!=0)||(y%400)==0)                break;            y++;        }        if(n!=0) n--;        while( n )        {            y+=4;            if(( y %4==0&&y%100!=0)||(y%400)==0)                n--;        }        printf("%d\n",y);    }    return 0;}

                 2.找到400年内的闰年数97,然后对其计算,看有几个400年,当然不要忘记100年内的计算。

  代码如下:

#include <iostream>using namespace std;#include <string.h>#include <stdio.h>#include <cmath>#include <algorithm>int main(){    int T;    scanf ( "%d",&T );    while( T-- )    {        int y,n;        scanf ( "%d %d", &y, &n );        while(1)        {            if(( y %4==0&&y%100!=0)||(y%400)==0)                break;            y++;        }        if(n!=0) n--;        y = y + n/97*400;        n=n%97;        while( n )//对100年内的处理        {            y+=4;            if(( y %4==0&&y%100!=0)||(y%400)==0)                n--;        }        printf("%d\n",y);    }    return 0;}
另附一大神的代码:
#include<iostream>using namespace std;int main(){int num;cin>>num;while(num--){int y,n;cin>>y>>n;while(!(y%400==0))  //找出第一个满足y%400==0的闰年{if(y%4==0 && y%100!=0){n--;if(n==0)break;  //退出循环}y++;}if(n!=0)n--;y=y+n/97*400;n = n%97;if(n) n += (n-1)/24;y=y+n/25*100+n%25*4;   //每100年24个闰年cout<<y<<endl;}return 0;}

0 0
原创粉丝点击