首页 > 试题广场 >

独立的小易

[编程题]独立的小易
  • 热度指数:845 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
小易为了向他的父母表现他已经长大独立了,他决定搬出去自己居住一段时间。一个人生活增加了许多花费: 小易每天必须吃一个水果并且需要每天支付x元的房屋租金。当前小易手中已经有f个水果和d元钱,小易也能去商店购买一些水果,商店每个水果售卖p元。小易为了表现他独立生活的能力,希望能独立生活的时间越长越好,小易希望你来帮他计算一下他最多能独立生活多少天。

输入描述:
输入包括一行,四个整数x, f, d, p(1 ≤ x,f,d,p ≤ 2 * 10^9),以空格分割


输出描述:
输出一个整数, 表示小易最多能独立生活多少天。
示例1

输入

3 5 100 10

输出

11
考虑两种情况:1.已有水果还没吃完就交不起房租了;2.已有水果吃完,仍然有剩余的钱付房租买水果。
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args){
        Scanner sc =new Scanner(System.in);
        String input = sc.nextLine();
        String[] cs = input.split(" ");
        int[] num =new int[cs.length];
        for(inti=0; i<cs.length; i++){
            num[i] = Integer.valueOf(cs[i]);
        }
        System.out.print(maxDay(num));
    }
     
    public static int maxDay(int[] a){
        if(a ==null|| a.length ==0){
            return0;
        }
         
        int max =0;
        int reminder = a[2];
        if(a[0] * a[1] >= a[2]){
            max = a[2] / a[0];
        }else{
            reminder -= a[0]*a[1];
            max = a[1] + reminder / (a[0] + a[3]);
        }
         
        return max;
    }
}

发表于 2019-07-19 16:46:29 回复(0)
第一次做这种题目,我以为可以不用导入,他会自动识别的,难怪我的声明scanner的语句是正确的,但是自行调试的时候老是报这个错误

发表于 2019-07-30 19:20:11 回复(0)
importjava.util.Scanner;
 
publicclassMain {
 
    publicstaticvoidmain(String[] args) {
        Scanner in = newScanner(System.in);
         
        intx = in.nextInt();
        intf = in.nextInt();
        intd = in.nextInt();
        intp = in.nextInt();
 
        intdays = (d - f*x)>0?(f+(d-f*x)/(x+p)):(d/x);
 
        System.out.println(days);
    }
}
emmm,就酱
发表于 2018-08-10 16:36:17 回复(0)
import java.util.Scanner;
 
public class Main{
     
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int x=scanner.nextInt();
        int f=scanner.nextInt();
        int d=scanner.nextInt();
        int p=scanner.nextInt();
         
        int dayResume = x+p;
        int day=0;
         
        int maxDay = d/x;
        if(maxDay<f){
            day = maxDay;
        }else{
            day = f+(d-f*x)/dayResume;
        }
   
        System.out.println(day);
         
    }
     
     
}

发表于 2020-08-07 17:40:15 回复(0)
分析:只考虑两种情况。一种是苹果很多,房租花完了,苹果还没吃完。即f>d/x,那结果就是有多少个苹果,活多少天。第二种是苹果吃完了,那么每天的开销就是房租钱加苹果钱。 首先得到,没有花钱买苹果时,住了多少天,剩余多少钱,然后再用剩余的钱去除房租加苹果的开销,剩余的天数。一加就OK了
import java.util.*;
public class Main{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        int f = sc.nextInt();
        int d = sc.nextInt();
        int p = sc.nextInt();
        int days =0;
        if(f>d/x)           
        {
            days = d/x;
            System.out.println(days);}
        else{
            int res = d-x*f;
            days = f + res/(x+p);
            System.out.println(days);
        }
    }
}
发表于 2018-08-07 11:27:57 回复(1)
importjava.util.*;
publicclassMain{
    publicstaticvoidmain(String[] args){
        Scanner input=newScanner(System.in);
        while(input.hasNext()){
            intx=input.nextInt();
            intf=input.nextInt();
            doubled=input.nextInt();
            doublep=input.nextInt();
            if((d/x)<f)
                System.out.println((int)(d/x));
            else
                System.out.println(f+(int)((d-f*x)/(p+x)));
        }
    }
}

发表于 2018-06-08 16:17:01 回复(0)