解题思路:
先用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分 求大佬指点
分享以下 ``` #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; }
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:640 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1059 |
C二级辅导-公约公倍 (C语言代码)浏览:1549 |
C语言训练-计算一个整数N的阶乘 (C语言代码)浏览:982 |
幸运数 (C++代码)浏览:1309 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:590 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:569 |
简单的a+b (C语言代码)浏览:574 |
字符串输入输出函数 (C语言代码)浏览:2604 |
IP判断 (C语言代码)浏览:592 |