输出y1到y2年之间的每一年的a月份的第b个周c。感觉像是一个恶心的模拟。更像一个很恶心的小学奥赛题。

题目:http://115.28.138.223/view.page?gpid=T25

考试的时候。我猜我是做不出来的。感觉这个代码的函数用的太机智了。某人智商堪忧丫。。。

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std; int run(int year) { // 判断是否是闰年。
if (year % == ) return ;
else if (year % != && year % == ) return ;
else return ;
} int days (int leap, int month) { // 判断这一年的1月到month月开始一共有多少天。这个函数好机智有木有。
switch (month) {
case : return ;
case : return ;
case : return leap ? : ;
case : return leap ? : ;
case : return leap ? : ;
case : return leap ? : ;
case : return leap ? : ;
case : return leap ? : ;
case : return leap ? : ;
case : return leap ? : ;
case : return leap ? : ;
case : return leap ? : ;
}
} int monthDays(int leap, int temp) { // 判断当年的temp月有多少天。
switch (temp) {
case :
case :
case :
case :
case :
case :
return ;
case :
case :
case :
case :
case :
return ;
case :
return leap ? : ;
}
} int main() {
int month, week, day, y1, y2;
while(cin >> month >> week >> day >> y1 >> y2) {
int leapCount = ;
for (int i=; i<y1; ++i) {
if (run(i) == ) leapCount++;
}
for (int i=y1; i<=y2; ++i) {
// 对于我这种小学数学没学好的人来说。。。下面的计算太难了。。
int totDay = (i-)* + leapCount + days(run(i), month); // 从1850年开始到当年的这个月开始一共有多少天。
int weekDay= totDay% + ; //当年的这个月开始时周几。
int weekCount = day < weekDay ? : ; //需要跨过几个周。如果day>weekDay。说明计数周又可以减少一个。基数是1。因为是第几周的周几。所以跨过week-1就好了。
int ans = -weekDay + (week - weekCount)* + day;
if (ans <= monthDays(run(i), month)) // 如果这一天在这个月存在的话。输出。
{
cout << i << '/';
if (month < ) cout << "";
cout << month << '/';
if (ans < ) cout << "";
cout << ans << endl;
}
else cout << "none\n";
if (run(i) == ) leapCount++; // 开始这里忘记了。!!!
}
}
return ;
}

最新文章

  1. ACM/ICPC 之 简单DP-记忆化搜索与递推(POJ1088-滑雪)
  2. 在Javascript中监听flash事件(转)
  3. postgresql - 服务配置
  4. c# winform 火狐浏览器 查看cookie
  5. SlickGrid example 3b: 支持撤销操作的编辑单元
  6. C/C++中产生随机数(rand,srand用法)
  7. 25.usb固件深入
  8. 四则运算出题器(c++)
  9. tar备份工具
  10. iOS---There was an internal API error 错误
  11. [置顶] Linux高编之进程--------fork函数的同步与异步(兄弟子进程和父子孙进程示列)
  12. Window7下手动编译最新版的PCL库
  13. 五个项目管理学习笔记.沟通技巧II
  14. 有趣的win8进度条
  15. oracle server config
  16. IIS 错误代码
  17. Oracle-08:连接查询
  18. 元数据Metadata
  19. Ubuntu16.04安装TensorFlow及Mnist训练
  20. AtCoder Regular Contest 077 E - guruguru

热门文章

  1. getContext,getApplicationContext和this有什么区别
  2. C# 判断网络文件是否存在
  3. [Pytorch]Pytorch中图像的基本操作(TenCrop)
  4. Mac OSX 安装qemu
  5. POJ 1222 EXTENDED LIGHTS OUT(高斯消元解XOR方程组)
  6. python后端工程师 数据爬虫
  7. MVC ---- EF三层代码
  8. 《Robot Framework自动化测试修炼宝典》道长
  9. 内存溢出和内存泄漏 mark下
  10. Enumerable扩展方法