#include<stdio.h> long long int f(long long int n,long long int a,long long int b) //n代表总题数,a代表星期一到星期五做的题的数量,b代表星期六和星期天做题的数量 { int flag; long long int sum=0; //flag用来记录最后是在1-5停的,还是在6-7停的 while(n!=0) { n-=5*a; //先算1-5 if(n<0) { flag=1; break; } sum+=5; n-=2*b; //再算6-7 if(n<0) { flag=2; break; } sum+=2; } if(flag==1) //如果是在1-5停的话 { n+=5*a; //加回来,然后算是在第几天的 while(n>a) { n-=a; sum++; } sum++; //不满一天就加回去 } else if(flag==2) { n+=2*b; while(n>b) { n-=b; sum++; } sum++; } return sum; } int main() { long long int a,b,n; scanf("%lld%lld%lld",&a,&b,&n); printf("%lld",f(n,a,b)); return 0; }
flag=n/(a*5+b*2); //flag就是记录总共可以进行多少个完全周 n-=(a*5+b*2)*flag; //然后直接减 sum+=flag*7; //sum就要加上进行的天数
#include<stdio.h> int main() { long long int a,b,n,sum=0; scanf("%lld%lld%lld",&a,&b,&n); long long int flag=n/(a*5+b*2); n-=(a*5+b*2)*flag; sum+=flag*7; if(n/a<=5) { sum+=n/a; if(n/a==5) { sum+=(n-5*a)/b+(n-5*a-b)%1; } else if(n%a>0) { sum++; } }else{ sum+=5+(n-5*a)/b; if((n-5*a)%b>0) { sum++; } } printf("%lld",sum); return 0; }
0.0分
103 人评分
#include<stdio.h> int main() { long long int a,b,n; scanf("%lld%lld%lld",&a,&b,&n); long long int sum=5*a+2*b; long long int ans=7*(n/sum); n=n%sum; long long int d[]={a,a,a,a,a,b,b},i; for(i=0;n>0;i++) { n-=d[i]; ans++; } printf("%lld",ans); return 0; }
#include<stdio.h> int main() { long long int a,b,n; scanf("%lld%lld%lld",&a,&b,&n); long long int sum=5*a+2*b; long long int ans=7*(n/sum); n=n%sum; long long int d[]={a,a,a,a,a,b,b},i; for(i=0;n>0;i++) { n-=d[i]; ans++; } printf("%lld",ans); return 0; }
简单的算法,虽然只能拿80分 #include <stdio.h> void main() { long long a,b,n; long long i, sum=0,days=0; scanf("%lld%lld%lld",&a,&b,&n); for(i=1;i<=7;i++) { days++; if(i<=5) sum+=a; if(i>5&&i<=7) sum+=b; if(i==7) i=0; if(sum>=n) break; } printf("%lld",days); }
我有个疑问,思路一暴力循环中,先算1—5的if(n<0)是否应该改成if(n<=0),因为题目里问的是“按照计划他将在第几天实现做题数大于等于 n 题”
#include<stdio.h> int main() { long long int a,b,n; int day= 0; scanf("%lld %lld %lld", &a, &b, &n); int s = 5 * a + 2 * b;//一周能写的题 int yu = n % s;//最后不满一周做的题 int zheng = n / s;//做满了几周 if (yu / a <= 5) { day=yu/a+1; } else { day=5+(yu-5*a)/b+1; } printf("%lld", zheng * 7 + day); return 0; } 帮帮我吧,有几个答案错误
请问大佬为什么这样暴力结果答案错误 0分 #include<stdio.h> int main(){ long long int a,b,n,sum = 0; long long int ans = 0; int i = 1; scanf("%lld %lld %lld",&a,&b,&n); while(sum<n){ if(i>=1&&i<=5){ sum+=a; }else if(i>=6&&i<=7){ sum+=b; }else{ i++; continue; } i++; ans++; i = i%8; } printf("%lld",ans); return 0; }
#include<iostream> using namespace std; int main() { long long a, b, n, cnt = 0; cin >> a >> b >> n; long long week = 0; //计算有几个整个周都在刷题 long long left = 0; //最后一个周剩余题量 week = n / (a * 5 + b * 2); left = n % (a * 5 + b * 2); while(left > 0){ //最后一个周进行循环 cnt++; if(cnt > 5) left -= b; else left -= a; } cout << cnt + week * 7; return 0; }
dotdot 2023-03-10 11:38:44 |
orz
#include<stdio.h> int main() { int a,b,n; int z=0,e=0,k=0; //a周一到周五每天,b周六周日,n总题数,z周数 scanf("%d%d%d",&a,&b,&n); int c=0,d=0; c=n%(5*a+2*b); if(c>5*a) { e=(c-5*a)/b+5; //周六周日判断 } else if(c%a==0) //正好做完 { e=c/a; } else e=c/a+1; d=n/(5*a+2*b); if(d>=1) { z=7*d; k=z+e; } else k=e; printf("%d",k); return 0; }
huachengxia 2023-02-26 11:05:44 |
周六周日判断那句好像不够全面
C语言训练-排序问题<2> (C++代码)浏览:936 |
C语言训练-数字母 (C语言代码)浏览:610 |
C语言程序设计教程(第三版)课后习题9.4 (Java代码)浏览:1447 |
字符串对比 (C语言代码)浏览:1471 |
C语言程序设计教程(第三版)课后习题6.11 (C语言代码)浏览:565 |
printf基础练习2 (C语言代码)浏览:653 |
a+b浏览:452 |
简单的事情 (C语言代码)浏览:679 |
A+B for Input-Output Practice (I) (C语言代码)浏览:451 |
拆分位数 (C语言代码)浏览:558 |