黑色星期五

在西方,星期五和数字 13都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的十三日又恰逢星期五就叫“黑色星期五”。

要求:输入年份,输出是:判断该年是否包含黑色星期五,如包含,给出具体日期

#include<stdio.h>
int dd(int n)
{
	if(n==4||n==6||n==9||n==11)
		return 30;
	else if(n==1||n==3||n==5||n==7||n==8||n==10||n==12)
		return 31;
	else if(n==2)
		return 28;
}
int rd(int n)
{
	if(n==4||n==6||n==9||n==11)
		return 30;
	else if(n==1||n==3||n==5||n==7||n==8||n==10||n==12)
		return 31;
	else if(n==2)
		return 29;
}
int run(int n)
{
	if((n%4==0&&n%100!=0)||n%400==0)
		return 1;
	return 0;
}
int main()
{
	int n,i,j;
	long long sum;
	while(scanf("%d",&n)!=EOF)
	{
		sum=0;
		for(i=1;i<=n;i++)
		{
			if(i!=n)
			{
				if(run(i)==1)
					sum+=366;
				else
					sum+=365;
			}
			else
			{
				if(run(i)==1)
				{
					for(j=1;j<=12;j++)
					{
						sum+=13;
						if(sum%7==5)
						{
							printf("%04d-%02d-13\n",i,j);
							sum=sum+rd(j)-13;
						}
						else
							sum=sum+rd(j)-13;
					}
				}
				else
				{
					for(j=1;j<=12;j++)
					{
						sum+=13;
						if(sum%7==5)
						{
							printf("%04d-%02d-13\n",i,j);
							sum=sum+dd(j)-13;
						}
						else
							sum=sum+dd(j)-13;
					}
				}
			}
		}
	}
	return 0;
}

 

高斯日记

大数学家高斯有个好习惯:无论如何都要记日记。

他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210

后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?

高斯出生于:1777年4月30日。

在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。

高斯获得博士学位的那天日记上标着:8113

请你算出高斯获得博士学位的年月日。

提交答案的格式是:yyyy-mm-dd, 例如:1980-03-21

请严格按照格式,通过浏览器提交答案。

注意:只提交这个日期,不要写其它附加内容,比如:说明性的文字。

#include<stdio.h>
int run(int n)
{
	if(n%4==0&&n%100!=0||n%400==0)
		return 1;
	return 0;
}
int main()
{
	int dd[13][2]={{0,0},{31,31},{28,29},{31,31},{30,30}
	,{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30}
	,{31,31}};
	int i,j,k,n,y,m,d;
	while(scanf("%d",&n)!=EOF)
	{
		y=1777;m=4;d=30;
		n-=1;
		while(n--)
		{
			if(dd[m][run(y)]==d)
			{
				m++;
				d=1;
			}
			else
				d++;
			if(m>12)
			{
				m%=12;
				y++;
				d=1;
			}
		}
		printf("%04d-%02d-%02d\n",y,m,d);
	} 
	return 0;
}

 

星系炸弹

在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。

每个炸弹都可以设定多少天之后爆炸。

比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。

有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。

 

请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19

请严格按照格式书写。不能出现其它文字或符号。

和高斯日记一样,只是这个是从后一天开始算的。

#include<stdio.h>
int run(int n)
{
	if(n%4==0&&n%100!=0||n%400==0)
		return 1;
	return 0;
}
int main()
{
	int i,j,y,m,d,n;
	int month[13][2]={{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};
	while(scanf("%d",&n)!=EOF)
	{
		y=2015;m=1;d=1;
		for(i=n-1;i>0;i--)
		{
			d++;
			if(d==month[m][run(y)]+1)
			{
				m++;
				d=1;
			}
			if(m>12)
			{
				d=1;
				m=1;
				y++;
			}
		}
		
		printf("%04d-%02d-%02d\n",y,m,d);
	}
	return 0;
}