有没有大神救救我!(题库题)

题目

学军中学小帅给CCF打了一通奇怪的电话。因为他发现了前三分钟的电话费太便宜了,于是他准备用完三分钟挂电话,接着打。

CCF一脸懵逼。。。

打完电话,小帅回到了学军机房,他开始思考刚才碰到的算法问题。

假如通话时间小于等于3分钟话费都是base块钱,大于三分钟以后每分钟按above块钱算,你有total块钱。问你最长能打多久电话。

输入格式:

输入一行,包含三个整数𝑏𝑎𝑠𝑒,𝑎𝑏𝑜𝑣𝑒,𝑡𝑜𝑡𝑎𝑙base,above,total

输出格式:

输出一行,包含一个整数

代码:

#include
using namespace std;
int a,b,c,ans;
int main(){
cin>>a>>b>>c;
while(c>=b){
ans+=3;
c-=a;
}
while(c){
ans++;
c-=b;
}
cout<<ans;

}

有没有大神来救救我!

誒~ 给你20分

#include <bits/stdc++.h>

using namespace std;

int main() {
    double base, above, total;
    cin >> base >> above >> total;
    
    double max_duration = 0.0;
    
    if (total <= base) {
        max_duration = total;
    } else {
        max_duration = 3 + (total - base) / above + 1;
    }
    
    cout << max_duration << endl;
    
    return 0;
}

我很调皮的哟~

你确定是对的?

你没事吧 用AI

举报了

我跟你说20分啊

666

都说了,标题写题目的名字,让老师方便找题!

要判断3分钟比后面贵的情况(不要问我怎么知道的)

解决方案

谁说的!!!

:rage: :rage: :face_with_symbols_over_mouth: :face_with_symbols_over_mouth:

@饶濙

  1. 判断 \rm total 是否超过 \rm base ,如果没有超过,那么输出 0
  2. 否则, \rm total\gets total-base ,令时间为 t ,则 t\gets3
  3. 接下来令 t\gets t+\Big\lfloor\dfrac{\rm total}{\rm above}\Big\rfloor ,此时的 t 即为答案。

不保证正确性,希望给组样例

【代码以删除】

不可以发代码哦

听不懂啊啊啊

if(total<base){
    cout<<0;
    return 0;
  }
  if(base>3*above){
    ans=3+(total-base)/above;
  }else{
    ans=(total/base)*3+(total%base)/above;
  }

核心代码