蓝桥杯2020 c/c++ b组

试题D 跑步锻炼

#include<bits/stdc++.h>
using namespace std;
int main(){
	int nian=2000,yue=1,tian=1,xq=6;
	int xnian=2020,xyue=10,xtian=1;
	int qianmi=0;
	while(nian<xnian){
		while(yue<= 12){//月份 
			if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12){// 大月 
				while(tian <= 31){
					if(tian==1||xq==1){
						qianmi=qianmi+1;
					}
					qianmi=qianmi+1;
					tian++;
					xq=(xq+1)%7;
				}
			}
			
			if(yue==4||yue==6||yue==9||yue==11){// 小月 
				while(tian <= 30){
					if(tian==1||xq==1){
						qianmi=qianmi+1;
					}
					qianmi=qianmi+1;
					tian++;
					xq=(xq+1)%7;
				}
			}
			
			if(yue==2){// 2月 
				if((nian%4==0&&nian%100!=0)||nian%400==0){ //闰年 
					while(tian <= 29){
						if(tian==1||xq==1){
							qianmi=qianmi+1;
						}
						qianmi=qianmi+1;
						tian++;
						xq=(xq+1)%7;
					}
				}
				
				if(nian%4!=0){ //平年 
					while(tian <= 28){
						if(tian==1||xq==1){
							qianmi=qianmi+1;
						}
						qianmi=qianmi+1;
						tian++;
						xq=(xq+1)%7;
					}
				}
				
			}
//			cout << yue << endl;      为了保证正确率,我建议在循环上加上输出 
			yue++;
			tian=1;
		}
//		cout << nian << endl;
		nian++;
		yue=1;
	}

	if(nian==xnian){
		while(yue< xyue){//月份 
			if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12){// 大月 
				while(tian <= 31){
					if(tian==1||xq==1){
						qianmi=qianmi+1;
					}
					qianmi=qianmi+1;
					tian++;
					xq=(xq+1)%7;
				}
			}
			
			if(yue==4||yue==6||yue==9||yue==11){// 小月 
				while(tian <= 30){
					if(tian==1||xq==1){
						qianmi=qianmi+1;
					}
					qianmi=qianmi+1;
					tian++;
					xq=(xq+1)%7;
				}
			}
			
			if(yue==2){// 2月 
				if((nian%4==0&&nian%100!=0)||nian%400==0){ //闰年 
					while(tian <= 29){
						if(tian==1||xq==1){
							qianmi=qianmi+1;
						}
						qianmi=qianmi+1;
						tian++;
						xq=(xq+1)%7;
					}
				}
				
				if(nian%4!=0){ //平年 
					while(tian <= 28){
						if(tian==1||xq==1){
							qianmi=qianmi+1;
						}
						qianmi=qianmi+1;
						tian++;
						xq=(xq+1)%7;
					}
				}
			}
			yue++;
			tian=1;
		}
	}
	if(yue==xyue){
		qianmi=qianmi+2;
	}
	cout << qianmi;
	return 0;
}

试题G 回文日期

#include<bits/stdc++.h>
using namespace std;
bool panduan_hw(int a){
	int hwsj[4];
	hwsj[0] = (a/10000000);
	hwsj[1] = (a/1000000)%10;
	hwsj[2] = (a/100000)%10;
	hwsj[3] = (a/10000)%10;
	int l=1;
//	printf("%d %d %d %d\n",hwsj[0],hwsj[1],hwsj[2],hwsj[3]);
	if(a%10!=hwsj[0]){
		return false;
	}
	if((a/10)%10!=hwsj[1]){
		return false;
	}
	if((a/100)%10!=hwsj[2]){
		return false;
	}
	if((a/1000)%10!=hwsj[3]){
		return false;
	}
	return true;
}
bool panduan_ab(int a){
	int absj[4];
	absj[0] = a/10000000;
	absj[1] = (a/1000000)%10;
	absj[2] = (a/100000)%10;
	absj[3] = (a/10000)%10;
	int l=1;
	if(absj[0]!=absj[2]){
		return false;
	}
	if(absj[1]!=absj[3]){
		return false;
	}
	if(a%10!=absj[0]){
		return false;
	}
	if((a/10)%10!=absj[1]){
		return false;
	}
	if((a/100)%10!=absj[2]){
		return false;
	}
	if((a/1000)%10!=absj[3]){
		return false;
	}
	
	return true;
}
bool hf(int a){
	int n = a/10000;
	int y = (a%10000)/100;
	int r = a%100;
	if((n%4==0&&a%100!=0)||n%400==0){ //闰年 
		if(y<=12&&y>=1){ //月成立 
			if(y==1&&y==3&&y==5&&y==7&&y==8&&y==10&&y==12){
				if(r<=31&&r>=1){
					return true;
				}else{
					return false;
				}
			}
			if(y==4&&y==6&&y==9&&y==11){
				if(r<=30&&r>=1){
					return true;
				}else{
					return false;
				}
			}
			if(y==2){
				if(r<=29&&r>=1){
					return true;
				}else{
					return false;
				}
			}
		}else{
			return false;
		}
	}else{//平年 
		if(y<=12&&y>=1){
			if(y==1&&y==3&&y==5&&y==7&&y==8&&y==10&&y==12){
				if(r<=31&&r>=1){
					return true;
				}else{
					return false;
				}
			}
			if(y==4&&y==6&&y==9&&y==11){
				if(r<=30&&r>=1){
					return true;
				}else{
					return false;
				}
			}
			if(y==2){
				if(r<=28&&r>=1){
					return true;
				}else{
					return false;
				}
			}
		}else{
			return false;
		}
	}
}
int main(){
	int sq;
	scanf("%d",&sq);
	int i,j;
	bool hw_flag=0,ab_flag=0; 
	for(i=sq+1;i<100000000;i++){
		if(panduan_hw(i)==1&&hw_flag==0&&hf(i)==1){
			printf("%d\n",i);
			hw_flag=1;
		}
		if(panduan_ab(i)==1&&ab_flag==0&&hf(i)==1){
			printf("%d\n",i);
			ab_flag=1;
		}
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值