复习题及新题训练13---星期几

  • 定位:算法集/蓝桥杯训练营2——星期几
  • 属性:日期问题
  • 难度:入门
  • 代码:
//#include<bits/stdc++.h>
#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;//如果year是闰年,2月份就会多出1天,与去年国庆节相隔366天,相当于相隔2天
  	}else{
  	   w+=1;//如果year是平年,与去年国庆节相隔365天,相当于相隔1天
  	}
  	if(w%7==0){
  		ans++;
  	}
  }
  cout<<ans;
  return 0;
}
//#include<bits/stdc++.h>
#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;
}
  • 感悟:利用年差的位移来推算有几个星期日;利用七天一周期推算出当前属于七天一周期中的哪一天进而对应星期几。
  • 归档:已归档
  • 元魂:河豚兽
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值