#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(){ int a,b,n; scanf("%d %d %d",&a,&b,&n); int week=n/(5*a+2*b); n=n%(5*a+2*b); int day; if(n/10>5){ if(n-5*a<=b){ day=6; } else if(n-5*a>b&&n-5*a<=2*b){ day=7; } } else{ if(n%10!=0){ day=n/10+1; }else{ day=n/10; } } int num_day=7*week+day; printf("%d",num_day); }
#include<stdio.h> int main() { long long a,b,n; scanf("%lld%lld%lld",&a,&b,&n); int t=n/(5*a+2*b); int num=n-t*(5*a+2*b); int day=t*(5+2); long long s=t*(5*a+2*b); for(day=1;s<=n;day++)// 剩下的天数肯定是小于7天的 { if(day==6||day==7) { s=s+b; } else { s=s+a; } } printf("%lld",t+day); }求大神们解答哪里不对,本人只是小白求解答
我这个比较简便但是只能拿80分为什么 #include<stdio.h> int main() { long long int a,b; long long int i=1; long long int count=0,n; long long int sum=0; scanf("%lld %lld",&a,&b); scanf("%lld",&n); while(i<=8) { if(i<=5) { sum=sum+a; count++; } if(i>5&&i<=7) { sum=sum+b; count++; } if(sum>=n) { break; } if(i==7) { i=0; } i++; } printf("%lld\n",count); return 0;
我这样改了一下 #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 = (n-5*a)/b; if(n % b > 0) { sum++; } } 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; }
第二个优质解是存在错误的呀,自己拿20、10、117这组数据去测,天数是6,正确需要的天数应该是7才符合题目要求,第一种解没发现问题。
killer 2023-08-22 21:00:04 |
#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 = (n-5*a)/b; if(n % b > 0) { sum++; } } 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; }
//现在sum=flag*7; if (n <= 5 * a) { if ((n % a) == 0) { printf("\n%lld\n", sum + n / a); } else { printf("\n%lld\n", sum + 1 + n / a); } } else { long long int temp = n - 5 * a; if (temp <= b) { printf("\n%lld\n", sum + 6); } else { printf("\n%lld\n", sum + 7); } } 这样为什么会显示错误?
这一串是用来做什么的 if(n/a==5) { sum+=(n-5*a)/b+(n-5*a-b)%1; }
#include<stdio.h> int main() { long int a,b,n,i,w,s=0; scanf("%ld %ld %ld",&a,&b,&n); w=n/(5*a+2*b); s=w*(5*a+2*b); for(i=1;i<8;i++){ if(i%7==6||i%7==0){ s+=b; } else{ s+=a; } if(s>=n){ printf("%ld",7*w+i); return 0; } } return 0; }
【回文数(二)】 (C++代码)浏览:932 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:643 |
C语言训练-尼科彻斯定理 (C语言代码)浏览:509 |
【蟠桃记】 (C语言代码)浏览:697 |
WU-整数平均值 (C++代码)浏览:1307 |
三角形 (C++代码)递推浏览:825 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:566 |
C二级辅导-阶乘数列 (C语言代码)浏览:583 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1029 |
众数问题 (C语言代码)浏览:660 |
徐少 2024-03-20 23:06:02 |
大佬求指导