淘宝网店
链接:https://www.nowcoder.com/questionTerminal/754921e9c98b43d1b2d70c227b844101
来源:牛客网
题目描述:
NowCoder在淘宝上开了一家网店。他发现在月份为素数的时候,当月每天能赚1元;否则每天能赚2元。
现在给你一段时间区间,请你帮他计算总收益有多少。
输入描述:
输入包含多组数据。
每组数据包含两个日期from和to (2000-01-01 ≤ from ≤ to ≤ 2999-12-31)。
日期用三个正整数表示,用空格隔开:year month day。
输出描述:
对应每一组数据,输出在给定的日期范围(包含开始和结束日期)内能赚多少钱。
示例
输入
2000 1 1 2000 1 31
2000 2 1 2000 2 29
输出
62
29
代码示例:
#include <iostream>
using namespace std;
int ShouY(int month)
{
int a[12]={2,1,1,2,1,2,1,2,2,2,1,2};
return a[month-1];
}
int Days(int year,int month)
{
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if((year%4==0&&year%100!=0)||(year%400==0))
{
a[1]+=1;
}
return a[month-1];
}
int main()
{
int year,month,day;
int year2,month2,day2;
while(cin>>year>>month>>day>>year2>>month2>>day2)
{
int sum=0;
if(year==year2&&month==month2&&day==day2)
{
sum+=ShouY(month);
}
if(year==year2&&month==month2&&day!=day2)
{
sum+=(day2-day+1)*ShouY(month);
}
if(year==year2&&month!=month2)
{
sum+=(Days(year,month)-day+1)*ShouY(month);
++month;
while(month<month2)
{
sum+=ShouY(month);
++month;
}
sum+=day2*ShouY(month2);
}
if(year!=year2)
{
sum+=(Days(year,month)-day+1)*ShouY(month);
++month;
if(month==13)
{
++year;
month=1;
}
while(year<=year2)
{
sum+=Days(year,month)*ShouY(month);
++month;
if(month==13)
{
++year;
month=1;
}
}
}
cout<<sum<<endl;
}
return 0;
}