江西财经大学第一届程序设计竞赛 B
链接:https://www.nowcoder.com/acm/contest/115/B
来源:牛客网
题目描述
给出一个出生日期,比如:1999-09-09,
问:从出生那一天开始起,到今天2018-04-21为止(包括出生日期和今天),有多少天,年月日都不包含数字4?
问:从出生那一天开始起,到今天2018-04-21为止(包括出生日期和今天),有多少天,年月日都不包含数字4?
输入描述:
第一行输入一个整数T(表示样例个数)
接下来T组样例
每个样例一行,包含一个字符串“yyyy-mm-dd”(1990<=yyyy<=2018)
题目保证测试数据的正确性
输出描述:
输出题意要求的天数
示例1
输入
1 1999-09-09
输出
5020
是我写长了...
#include<iostream> #include<string> #include<stdio.h> #include<map> using namespace std; map<int,int>Mp; int main(){ Mp[1]=1;Mp[2]=1; Mp[3]=1;Mp[5]=1; Mp[6]=1;Mp[7]=1;Mp[8]=1; Mp[9]=1;Mp[10]=1;Mp[11]=1; Mp[12]=1;Mp[13]=1; Mp[15]=1;Mp[16]=1; Mp[17]=1;Mp[18]=1; Mp[19]=1;Mp[20]=1;Mp[21]=1; Mp[22]=1;Mp[23]=1;Mp[25]=1; Mp[26]=1;Mp[27]=1; Mp[28]=1;Mp[29]=1;Mp[30]=1;Mp[31]=1; Mp[1990]=1;Mp[1992]=1; Mp[1993]=1;Mp[1995]=1; Mp[1996]=1;Mp[1997]=1;Mp[1998]=1; Mp[1999]=1;Mp[2000]=1;Mp[2001]=1; Mp[2002]=1;Mp[2003]=1; Mp[2005]=1;Mp[2006]=1; Mp[2007]=1;Mp[2008]=1; Mp[2009]=1;Mp[2010]=1; Mp[2010]=1;Mp[2011]=1;Mp[2012]=1;Mp[2013]=1; Mp[2015]=1;Mp[2016]=1;Mp[2017]=1;Mp[2018]=1; int t; int y,m,d; cin>>t; while(t--){ int sum=0; scanf("%d-%d-%d",&y,&m,&d); int f=0; int ans=d; for(int j=m;j<=12;){ int flag=0; int flag2=0; if(Mp[y]&&Mp[j]&&Mp[ans]){ sum++; } // cout<<ans<<endl; if(y%4==0){ if(j==1||j==3||j==5||j==7||j==8||j==10||j==12){ if(ans==31){ flag2=1; flag=1; } }else if(j==2){ if(ans==29){ flag2=1; flag=1; } }else{ if(ans==30){ flag2=1; flag=1; } } }else if(y%4){ if(j==1||j==3||j==5||j==7||j==8||j==10||j==12){ if(ans==31){ flag2=1; flag=1; } }else if(j==2){ if(ans==28){ flag2=1; flag=1; } }else{ if(ans==30){ flag2=1; flag=1; } } } // cout<<m<<" "<<ans<<endl; if(flag==1){ ans=1; }else{ ans++; //cout<<"A"<<endl; } if(flag2){ j++; } } d=1; for(int i=y+1;i<=2018;){ for(int j=1;j<=12;){ int flag=0; int flag2=0; if(Mp[i]&&Mp[j]&&Mp[d]){ sum++;//cout<<i<<"-"<<j<<"-"<<d<<" "<<sum<<endl; } if(i==2018&&j==4&&d==21){ f=1; break; } if(i%4==0){ if(j==1||j==3||j==5||j==7||j==8||j==10||j==12){ if(d==31){ flag2=1; flag=1; } }else if(j==2){ if(d==29){ flag2=1; flag=1; } }else{ if(d==30){ flag2=1; flag=1; } } }else if(i%4){ if(j==1||j==3||j==5||j==7||j==8||j==10||j==12){ if(d==31){ flag2=1; flag=1; } }else if(j==2){ if(d==28){ flag2=1; flag=1; } }else{ if(d==30){ flag2=1; flag=1; } } } if(j==12&&d==31){ i++; } // cout<<flag<<endl; if(flag==1){ d=1; }else{ d++; //cout<<"A"<<endl; } if(flag2){ j++; } } if(f){ break; } } cout<<sum<<endl; } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~