当前位置: 首页 > news >正文

每日OJ_牛客_淘宝网店(日期模拟)

目录

牛客_淘宝网店(日期模拟)

解析代码


牛客_淘宝网店(日期模拟)

淘宝网店__牛客网


解析代码

        这是一个变相的日期计算器。只不过2、3、5、7、11月算1天,其他7个月算2天。

        既然是一个变相的日期计算器,那就写一个日期计算器,然后加以修改即可。那么,日期计算器怎么写呢?日期计算器的话,可以把日期计算分为三个部分:

  • 第一个不足一年的年份,最后一个不足一年的年份,和中间的足年年份。
  • 足年年份我们只需要判断闰年后加365或366就行了。
  • 不足年,我们就要求出这个日期是这一年的第几天。假设要求的是1994年5月27日到2003年4月29日,那么,我们就要先求出5月27日是这一年的第几天,然后判断1994年不是闰年,不是,所以用365减去这个天数,就得到结果了。本题中第一天也要算,所以还要加上这一天。然后再算出4月29日是2003年的第几天,就可以解决问题了。所以需要一个函数,功能是给出一个年月日,求出这是这一年的第几天。

        这些功能全部实现后,再去改造使得1、4、6、8、9、10、12月的天数翻倍,那么程序就全部完成了。

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
// // 月份为素数的时候,当月每天能赚1元;否则每天能赚2元
// int arr[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
//闰年判断函数
inline int leap_year(int year)
{return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
}
//足年天数
inline int profit_of_year(int year)
{return 2 * 31+ 1 * 28+ 1 * 31+ 2 * 30+ 1 * 31+ 2 * 30+ 1 * 31+ 2 * 31+ 2 * 30+ 2 * 31+ 1 * 30+ 2 * 31+ leap_year(year);
}
//判断这个月份是不是质数月
inline bool prime(int n)
{return n == 2 || n == 3 || n == 5 || n == 7 || n == 11;
}
//求出一个日子是这一年的第几天
int profit_of_this_year(int year, int month, int day)
{if (!prime(month))day *= 2;while (--month){switch (month){case 1:case 8:case 10:case 12:day += 62;break;case 3:case 5:case 7:day += 31;break;case 4:case 6:case 9:day += 60;break;case 11:day += 30;break;case 2:day += 28 + leap_year(year);break;default:;}}return day;
}
int main()
{int year1, month1, day1, year2, month2, day2;int count_profit = 0;while (std::cin >> year1 >> month1 >> day1 >> year2 >> month2 >> day2){count_profit = 0;count_profit += profit_of_year(year1) -profit_of_this_year(year1, month1, day1 - 1);
//这里的day1 - 1虽然有可能会出现0日,但是实际2月0日就相当于1月31日,所以不影响结果。count_profit += profit_of_this_year(year2, month2, day2);if (year1 == year2) // 避免起点和终点是同一年,如果是同一年,要减掉这一年的天数。{count_profit -= profit_of_year(year1);}for (int i = year1 + 1; i < year2; i++) //中间足年每一年的天数{count_profit += profit_of_year(i);}std::cout << count_profit << std::endl;}return 0;
}

http://www.mrgr.cn/news/8066.html

相关文章:

  • 计算机毕业设计Flink+Hadoop广告推荐系统 广告预测 广告数据分析可视化 广告爬虫 大数据毕业设计 Spark Hive 深度学习 机器学
  • Day98:云上攻防-云原生篇K8s安全Config泄漏Etcd存储Dashboard鉴权Proxy暴露
  • 游戏引擎phaser.js3的使用之玩家和静态物理组碰撞
  • JavaScript初级——文档的加载
  • 深入理解 Go 语言并发编程底层原理
  • SSRF漏洞学习
  • MySQL主从复制之GTID模式
  • 未来已来:探索机器学习如何重塑人工智能的未来方向
  • 如何从电脑/外部硬盘驱动器/USB 驱动器/内存卡恢复数据?
  • 数学建模学习(117):四阶龙格-库塔方法从理论到Python/matlab实践
  • 安科瑞电气防火在线保护器 ASCP210系列适用于汽车充电桩
  • MATLAB 计算两点沿某个方向的间距(81)
  • java进阶学习路线
  • spark重试次数讲解
  • F - Dist Max 2
  • css高级
  • WIFI 模组8286驱动
  • Ubuntu24.04安装MYSQL8.0
  • 一、插件开发入门【Qt环境-mingw6.5.3-qmake版】-封装dll调用
  • 老师怎样分班更便捷?