解题思路:
先用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语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:511 |
妹子杀手的故事 (C语言代码)浏览:679 |
钟神赛车 (C++代码)浏览:863 |
C语言训练-角谷猜想 (C语言代码)浏览:1705 |
妹子杀手的故事 (C语言代码)浏览:1215 |
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:347 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:579 |
母牛的故事 (C语言代码)浏览:1427 |
水仙花 (C语言代码)浏览:1045 |
关于C语言变量位置的问题浏览:272 |