4402. 刷题统计
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。
他计划周一至周五每天做 a道题目,周六和周日每天做 b 道题目。
请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?
输入格式
输入一行包含三个整数 a,b, 和 n。
输出格式
输出一个整数代表天数。
数据范围
对于 50%的评测用例,1≤a,b,n≤106,
对于 100%的评测用例,1≤a,b,n≤1018。
输入样例:
10 20 99
输出样例:
8
第一次暴力,超时,数据范围也超
#include <iostream>
using namespace std;
long long a,b,n,week,day=0,s;
int main()
{
cin>>a>>b>>n;
while(s<=n)
{
day++;
if(day>=1&&day<=5)s=s+a;
if(day==6)s=s+b;
if(day==7)s=s+b,day=0,week++;
}
cout<<week*7+day<<endl;
return 0;
}
第二次通过了
#include <iostream>
using namespace std;
long long a,b,n,day,week,Sweek,t,m,s;
int main()
{
cin>>a>>b>>n;
Sweek=a*5+b*2;//一周完成的题目
t=n/Sweek;//需要t周可完成题目
m=n%Sweek;//凑不够一周的题目数
while(s<m)
{
day++;
if(day>=1&&day<=5)s=s+a;
if(day==6||day==7)s=s+b;
}
day=day+t*7;
cout<<day<<endl;
return 0;
}
跑步锻炼
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。
小蓝跑步已经坚持了很长时间,从 20002000 年 11 月 11 日周六(含)到 20202020 年 1010 月 11 日周四(含)。请问这段时间小蓝总共跑步多少千米?
我写的代码如下
#include <iostream>
using namespace std;
int day=6,s,y1,t;
int main()
{
for(int n=2000;n<=2020;n++)
{
y1=12;
if(n==2020)y1=10;
for(int y=1;y<=y1;y++)
{
t=30;
if((n%4==0&&n%100!=0||n%400==0)&&y==2)t=29;
if(!(n%4==0&&n%100!=0||n%400==0)&&y==2)t=28;
if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)t=31;
if(n==2020&&y==10)t=1;
for(int r=1;r<=t;r++)
{
if(day==7)day=0;
if(r==1||day==1||r==1&&day==1)s=s+2;
else s+=1;
day++;
}
}
}
cout<<s<<endl;
return 0;
}