- 定位:算法集/蓝桥杯训练营2——星期几
- 属性:日期问题
- 难度:入门
- 代码:
#include<iostream>
#include<cstdio>
using namespace std;
int ans,w;
int main(){
w=7;
for(int i=1950;i<2012;i++){
if(i%400==0||(i%4==0&&i%100!=0)){
w+=2;
}else{
w+=1;
}
if(w%7==0){
ans++;
}
}
cout<<ans;
return 0;
}
#include<iostream>
using namespace std;
int y,m,d,ans;
string weekday[7]={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
int Whatday(int y,int m,int d){
for(int i=1;i<y;i++){
if(i%400==0||(i%4==0&&i%100!=0)){
ans+=366%7;
ans%=7;
}else{
ans+=365%7;
ans%=7;
}
}
for(int i=1;i<m;i++){
if(i==2){
if(i%400==0||(i%4==0&&i%100!=0)){
ans+=29%7;
ans%=7;
}else{
ans+=28%7;
ans%=7;
}
}else if(i==4||i==6||i==9||i==11){
ans+=30%7;
ans%=7;
}else{
ans+=31%7;
ans%=7;
}
}
ans+=(d-1)%7;
ans%=7;
return ans;
}
int main(){
cin>>y>>m>>d;
cout<<weekday[Whatday(y,m,d)];
return 0;
}
- 感悟:利用年差的位移来推算有几个星期日;利用七天一周期推算出当前属于七天一周期中的哪一天进而对应星期几。
- 归档:已归档
- 元魂:河豚兽