• HUT1102 月份牌 一直在PE


    1102: 月份牌

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 48  Solved: 2
    [Submit][Status][Web Board]

    Description

    这里有一份2011年的月份牌可以参考

          January               February               March        
    Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
    1 1 2 3 4 5 1 2 3 4 5
    2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12
    9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19
    16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26
    23 24 25 26 27 28 29 27 28 27 28 29 30 31
    30 31
    April May June
    Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
    1 2 1 2 3 4 5 6 7 1 2 3 4
    3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11
    10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18
    17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25
    24 25 26 27 28 29 30 29 30 31 26 27 28 29 30

    July August September
    Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
    1 2 1 2 3 4 5 6 1 2 3
    3 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 10
    10 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 17
    17 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 24
    24 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29 30
    31
    October November December
    Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
    1 1 2 3 4 5 1 2 3
    2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10
    9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17
    16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24
    23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31
    30 31

    请编程实现输出给定年份(1-2050),给定月份(1-12)的月份牌。

    Input

    两个数 N M,表示公元N年,M月。

    Output

    该月的月份牌,注意格式。

    Sample Input

    2012 12

    Sample Output

    Su Mo Tu We Th Fr Sa
                                   1
      2   3   4   5   6   7   8
      9 10 11 12  13  14 15
    16 17 18  19 20 21 22
    23 24 25  26  27 28 29
    30 31

          网页好像不太兼容那格式。一直在PE啊,看了后台数据,无语了,手翻万年历,发现后台测试数据竟然是错的,我无语了。
      代码如下:
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <iostream>
    using namespace std;
    
    int day[13]= { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };// 这时平年各月对应的天数
    
    int mday[13]= { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; 
    
    int firstday[2055]; // 存储每一年第一天是星期几
    
    bool is_spe( int year )
    {
    	if( ( year% 4== 0&& year% 100!= 0 )|| year% 400== 0 )
    	{
    		return true;
    	}
    	else
    	{
    		return false;
    	}
    }
    
    int main(  )
    {
    	firstday[2011]= 6;
    	for( int i= 2010; i>= 1; --i )
    	{
    		int curday= is_spe( i )? 366: 365;
    		curday%= 7;
    		firstday[i]= firstday[i+ 1]- curday;
    		if( firstday[i]<= 0 )  firstday[i]+= 7;
    	}
    	for( int i= 2012; i<= 2050; ++i )
    	{
    		int curday= is_spe( i- 1 )? 366: 365;
    		curday%= 7;
    		firstday[i]= firstday[i- 1]+ curday;
    		firstday[i]%= 7;
    		if( !firstday[i] )  firstday[i]= 7;
    	}
    	int year, mon;
    	while( scanf( "%d %d", &year, &mon )!= EOF )
    	{
    		int fday= firstday[year], num_day, sign;
    		if( is_spe( year )&& mon> 2 )
    		{
    			num_day= day[mon- 1];
    		}
    		else
    		{
    			num_day= day[mon- 1]- 1;
    		}
    		sign= ( fday+ num_day )% 7;
    		if( !sign )  sign= 7;
    		int num_mday= ( is_spe( year )&& mon== 2 )? 29: mday[mon];
    		puts( "Su Mo Tu We Th Fr Sa" );
    		for( int i= 1; i<= num_mday; ++i )
    		{
    			int temp= ( sign+ i )% 7;
    			for( int j= 0; i== 1&& j< temp; ++j )
    			{
    				printf( j== 0? "  ": "   " );
    			}
    			if( temp== 0 )
    			{
    				printf( "%2d", i );
    			}
    			else if( temp== 6 )
    			{
    				printf( "%3d\n", i );
    			}
    			else
    			{
    				printf( "%3d", i );
    			}
    			if( i== num_mday&& temp!= 6 )
    			{
    				puts( "" );
    			}
    		}
    	}
    	return 0;
    }
    
    
    /*Su Mo Tu We Th Fr Sa 
                       1 
     2  3  4  5  6  7  8
     9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30 31*/ 
    
      
  • 相关阅读:
    优化!优化!
    JavaScript 错误
    js 学习总结
    JavaScript join() 方法
    JavaScript shift() 方法
    JavaScript split() 方法
    arTemplate解析语法
    getTime 方法
    PHP 5 数据类型
    thinkphp 实现微信公众号开发(二)--实现自定义菜单
  • 原文地址:https://www.cnblogs.com/Lyush/p/2124691.html
Copyright © 2020-2023  润新知