解题思路:
先用ans表示有多少周,n/(5*a+b*2)
工作日有二天,周末有二天
sum表示天数
用n-(5*a+2*b)*ans=剩余的天数
剩余的天数一定会落在工作日,或者周末这两种情况;
再用(n-(5*a+2*b)*ans)/a表示能在工作日完成的a题,
如果(n-(5*a+2*b)*ans)%a 不等于0,说明有剩余,还要加一天
在周末这种情况也同理;
注意事项:对于 100% 的评测用例,1 ≤ a, b, n ≤ 1018,要用long long
参考代码:
#include<bits/stdc++.h> using namespace std; int main() { long long a,b,n; long long ans=0,sum=0; scanf("%lld%lld%lld",&a,&b,&n); ans+=n/(5*a+b*2); sum=ans*7; if((n-(a*5+b*2)*ans)<=5*a) { sum+=(n-(5*a+2*b)*ans)/a; if((n-(5*a+2*b)*ans)%a!=0) { sum++; } } else { sum+=5; sum+=((n-(5*a+2*b)*ans)-5*a)/b; if(((n-(5*a+2*b)*ans)-5*a)%b!=0) { sum++; } } printf("%lld",sum); }
0.0分
19 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复