飞越的心


私信TA

用户名:H2030819089

访问量:18982

签 名:

等  级
排  名 77
经  验 9777
参赛次数 18
文章发表 38
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

先用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分

40 人评分

  评论区

#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分 求大佬指点
2023-12-14 19:57:32
分享以下
```
#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;
}
2023-10-29 15:27:46
非常感谢
2022-05-26 10:18:06
  • «
  • 1
  • »