CDOJ 1299 Date
来源:互联网 发布:网络诈骗妇女案例 编辑:程序博客网 时间:2024/04/27 16:02
最后过的一道题,看队友的样子,貌似是神烦的题
2800年一循环,菜勒公式可以搞
代码:
#include<cstdio>#include<cstring>#include<iostream>long long sum[2801][13];void init(){ memset(sum,0,sizeof(sum)); long long count=0; for(int i=1;i<=2800;i++) { for(int j=1;j<=12;j++) { int y,m,d; y=2016+i-1; m=j; if(m==1) { y=y-1; m=13; } else if(m==2) { y=y-1; m=14; } if((1 + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400) % 7==0) { sum[i][j]=count+7; count+=7; } else sum[i][j]=count; } } // printf("%lld\n",sum[2800][12]); return;}long long F(long long y,long long m,long long d){ long long ans=0; ans+=(y-2016)/2800*sum[2800][12]; //printf("%lld\n",ans); long long tmp=y; tmp=(tmp-2016)%2800+2016; if(m>1) ans+=(sum[tmp-2016+1][m-1]); else if(m==1&&tmp>2016) ans+=(sum[tmp-2016][12]); //printf("%d %d\n",tmp-2016+1,m-1); // printf("%lld\n",sum[tmp-2016+1][m-1]); if(m==1) { y-=1; m=13; } else if(m==2) { y-=1; m=14; } for(long long i=1;i<=d;i++) { if((i + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400) % 7==i-1) ans++; } // printf("%d\n",ans); return ans;}int main(){ init(); int t; scanf("%d",&t); while(t--) { long long x1,y1,z1,x2,y2,z2; scanf("%lld%lld%lld%lld%lld%lld",&x1,&y1,&z1,&x2,&y2,&z2); long long ans1=F(x1,y1,z1); long long ans2=F(x2,y2,z2); long long ans=ans2-ans1; //printf("%lld\n",ans); if(y1==1) { y1=13; x1-=1; } else if(y1==2) { x1-=1; y1=14; } if((z1 + 2*y1 + 3*(y1+1)/5 + x1 + x1/4 - x1/100 + x1/400) % 7==z1-1) ans++; printf("%lld\n",ans); }}
0 0
- CDOJ 1299 Date
- CDOJ Clock
- CDOJ Flagstone
- CDOJ 149
- 【CDOJ 1339】
- date
- date
- date
- Date
- date
- date
- date
- date
- date
- date
- date
- date
- date
- mybatis学习笔记
- Android Studio的常用设置
- 赫夫曼树
- c++中的关键字--static,this,virtual,volatile与operator
- JavaScript 惰性载入函数
- CDOJ 1299 Date
- 常用排序算法
- 报文怎么从外网回内网(端口映射)
- 【Android】not allowed to send broadcast android.intent.action.MEDIA_MOUNTED
- 归并排序C++实现
- AppWidget API文档翻译+little解读
- 转战gulp,实现前端静态资源的压缩,加MD5戳,替换引用,加CDN前缀
- 数据结构课程上机实验题(二)
- android系统开机动画设置方法介绍