ADV-127-日期计算
来源:互联网 发布:淘宝店运费险怎么设置 编辑:程序博客网 时间:2024/05/22 02:31
问题描述
已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况。尤其是逢百年不闰,逢400年闰的情况。
输入格式
输入只有一行
YYYY MM DD
YYYY MM DD
输出格式
输出只有一行
W
W
数据规模和约定
1599 <= YYYY <= 2999
1 <= MM <= 12
1 <= DD <= 31,且确保测试样例中YYYY年MM月DD日是一个合理日期
1 <= W <= 7,分别代表周一到周日
1 <= MM <= 12
1 <= DD <= 31,且确保测试样例中YYYY年MM月DD日是一个合理日期
1 <= W <= 7,分别代表周一到周日
样例输入
2011 11 11
样例输出
5
//-----------C----------#include<stdio.h>int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int main(void){int y,m,d,i,temp=0,sum=0,j,u;scanf("%d%d%d",&y,&m,&d);for(i=0;i<2011;i++){if((i%4==0)&&(i%100!=0)||(i%400==0)){sum++;}sum+=365;}sum=sum+365-50;for(i=0;i<y;i++){if((i%4==0)&&(i%100!=0)||(i%400==0)){temp++;}temp+=365;}for(j=1;j<m;j++){temp+=month[j];if(((y%4==0)&&(y%100!=0)||(y%400==0))&&(j==2))temp++;}temp+=d;if(temp>=sum){if((temp-sum+5)%7==0)printf("%d",7);else printf("%d",(temp-sum+5)%7);}else{u=sum-temp;if(u<=5){printf("%d",!(5-u)%7?7:(5-u)%7);}else{printf("%d",7-(u-5)%7?7-(u-5)%7:7);}}return 0;}//----------C++---------------#include<iostream>#include<cstring>#include<cstdio>using namespace std;bool Is(int y){ if(y%400==0) return 1; if(y%100==0) return 0; if(y%4==0) return 1; return 0;}int Month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};struct date{ int yyyy,mm,dd; date(int y=0,int m=0,int d=0){ yyyy=y; mm=m; dd=d; } bool operator < (const date &rhs) const{ if(yyyy!=rhs.yyyy) return yyyy<rhs.yyyy; if(mm!=rhs.mm) return mm<rhs.mm; return dd<rhs.dd; } bool operator == (const date &rhs) const{ return (!((*this)<rhs) && !(rhs<(*this))); } int operator - (const date &rhs) const{ int ret=0; date t=rhs; while(!(t==(*this))){ // cout<<t.yyyy<<'-'<<t.mm<<'-'<<t.dd<<' '; ret++; t.dd++; if(t.dd==(t.mm==2 ? Month[t.mm]+Is(t.yyyy) : Month[t.mm])+1){ t.dd=1; t.mm++; } if(t.mm==13){ t.yyyy++; t.mm=1; } } return ret;// if(yyyy=rhs.yyyy)// if(rhs.mm==2)// ret+=(28+Is(rhs.yyyy)-rhs.dd);// else ret+=(Month[rhs.mm]-rhs.dd);// for(int i=rhs.mm+1;i<=12;i++)// if(i==2) ret+=Month[i]+Is(rhs.yyyy);// else ret+=Month[i];// for(int i=rhs.yyyy+1;i<yyyy;i++)// ret+=365+Is(i);// for(int i=1;i<mm;i++)// if(i==2) ret+=Month[i]+Is(yyyy);// else ret+=Month[i];// ret+=dd;// return ret; }};int main(){ date n,st(2011,11,11); while(cin>>n.yyyy>>n.mm>>n.dd){ int t=0; if(n<st) t=-(st-n); else t=n-st; // cout<<t<<endl; t=((t%7)+7)%7; int ans=(t+t); cout<<((5+t+6)%7+1)<<endl; }}
阅读全文
0 0
- ADV-127-日期计算
- 蓝桥杯 ADV-127 算法提高 日期计算
- 蓝桥杯 ADV-127 算法提高 日期计算
- ADV-123-概率计算
- 蓝桥杯 ADV-76 算法提高 GDP计算
- 蓝桥杯 ADV-87 算法提高 利息计算
- ADV-74-算法提高-计算整数因子
- 算法提高 ADV-12 计算时间
- 算法提高 ADV-63 利息计算
- 算法提高 ADV-74 计算整数因子
- 算法提高 ADV-76 GDP计算
- 算法提高 ADV-87 利息计算
- 日期计算
- 计算日期
- 日期计算
- 日期计算
- 日期计算
- 日期计算
- raft 一致性算法
- 比高房价更可怕的是,35岁以后你还能干嘛?这是我看过的最棒建议
- 一起艳学java多线程(一)
- JQurey 中$.ajax()方法参数详解
- LU Decomposition
- ADV-127-日期计算
- Java 中的 WeakHashMap
- mediaPlayer播放过程中出现自动停止
- WPF 长时间无鼠标键盘操作自动回到主页
- 数组
- How can i change the title?
- C#继承(一)——继承的类型
- UE4蓝图节点翻译--- Print String
- 单片机的第一个实验程序