解题思路:
先用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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include <stdio.h> int zhen(long long n,long long m) { long int p = n / m; if (n % m != 0) { return p + 1; } else return p; } int main() { long long int day, a,b, n; scanf("%d %d %d", &a, &b, &n); long int week = n / (5 * a + b * 2);//几周 day= 7 * week;//多少天 n= n - week * (5 * a + b * 2);//剩余题数 if (n <= 5 * a) { day = day + zhen(n , a); } else { day = day + 5 + zhen(n - 5 * a, b); } printf("%lld", day); return 0; } 为什么只有80分 求大佬指点分享以下 ``` #include<bits/stdc++.h> using namespace std; int main(){ long w,a,b,n,count=0; cin>>a>>b>>n; w=n/(5*a+2*b); n=n-w*(5*a+2*b); while(n>0){ count++; if(count<=5){ n=n-a; }else{ n=n-b; } } count=7*w+count; cout<<count; return 0; }