首页 > 试题广场 >

KiKi和酸奶

[编程题]KiKi和酸奶
  • 热度指数:54487 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

BoBo买了一箱酸奶,里面有n盒未打开的酸奶,KiKi喜欢喝酸奶,第一时间发现了酸奶。KiKih分钟能喝光一盒酸奶,并且KiKi在喝光一盒酸奶之前不会喝另一个,那么经过m分钟后还有多少盒未打开的酸奶?


输入描述:
多组输入,每组输入仅一行,包括n,h和m(均为整数)。输入数据保证m <= n * h。


输出描述:
针对每组输入,输出也仅一行,剩下的未打开的酸奶盒数。
示例1

输入

8 5 16

输出

4
#include<stdio.h>
int main()
{
    int n=0;
    int m=0;
    int h=0;
    int rest=0;
    while(scanf("%d %d %d",&n,&h,&m)!=EOF)
    {
        
        if(m<=n*h)
        {
            if(m%h==0)
            {
                rest=n-m/h;
                printf("%d\n",rest);
            }
            else
            {
                rest=n-m/h-1;
                printf("%d\n",rest);
            }
        }
        getchar();
        
    }
    
    
    
    return 0;
}

发表于 2022-05-12 13:45:35 回复(0)
#include <stdio.h>
int main()
{
    int n, h, m;
    scanf("%d%d%d", &n, &h, &m);
    printf("%d\n", n - m / h - (m % h) % (m % h + 1));
    //余数化一法: (m % h) % (m % h + 1)
    return 0;
}

发表于 2022-03-16 21:45:39 回复(0)
n,h,m = map(int,input().split(' '))
if m<= (n*h):
    if m%h==0:
        print(n-m//h)
    else:
        print(n-(m//h)-1)


        
t = input().split(' ')
n = int(t[0])
h = int(t[1])
m = int(t[2])
if m<= (n*h):
    if m%h==0:
        print(n-m//h)
    else:
        print(n-(m//h)-1)

发表于 2021-07-15 22:46:35 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //总数
        int n = scanner.nextInt();
        //一瓶所用时间
        int h = scanner.nextInt();
        //经过时间
        int m = scanner.nextInt();
        //喝掉的酸奶总数=已经喝掉的(m/h)+喝了但没喝完的(m%h);
        int total = m % h > 0 ? m/h+1:m/h;
        int odd = n - total;
        System.out.println(odd);
    }
}

编辑于 2021-03-16 08:51:17 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner scan =new Scanner(System.in);
        int n =scan.nextInt();
        int h =scan.nextInt();
        int m =scan.nextInt();
        double m1=m;
        double h1=h;
        double c=m1/h1;
        double d =n-Math.ceil(c);
        
        System.out.println((int)d);
    }
}

发表于 2020-04-29 10:52:43 回复(0)

首先判断分钟数能不能整除5,
如果能整除的话,
所喝的瓶数就是:分钟数/5,
否则就是:分钟数/5+1
剩下的=总数-所喝的

import java.util.*;
public class Main
{
    public static void main(String [] args)
    {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNextInt())
        {
            int n=sc.nextInt();
            int h=sc.nextInt();
            int m=sc.nextInt();

            int f=(m%h==0?m/h:m/h+1);
            int result=n-f;
            System.out.println(result);
        }
    }
}
发表于 2020-03-25 22:26:35 回复(0)
#include <stdio.h>
int main(){
    int n, h, m;
    int spare;
    while(~scanf("%d %d %d", &n, &h, &m)){
        if(m <= n*h){
            spare = (m%h != 0)? n-(m/h+1):(n - m/h);
            printf("%d\n", spare);
        }
    }
    return 0;
}
关键分清m是否为h的整数倍。
编辑于 2020-03-13 22:13:24 回复(0)
#include <stdio.h>

int main()
{
    int n, h, m;
    while(~scanf("%d%d%d", &n, &h, &m))
    {
        printf("%d\n", n - (m / h) - (m % h ? 1 : 0));
    }
}

发表于 2020-04-05 16:37:48 回复(1)
个人认为这个题是考天花板函数。
C语言 math.h中ceil(x)函数返回不小于x的最小正整数。刚刚好用到这里。
PS:向ceil中输入时记得先转换成float,否则小数点后数据丢失就得不到正确结果了。
#include <stdio.h>
#include <math.h>

int main(void){
    int n,h,m;
    scanf("%d %d %d",&n,&h,&m);
    int rest = n-ceil((float)m/h);
    printf("%d",rest);
    return 0;
}


编辑于 2020-03-21 17:27:03 回复(0)
#include<stdio.h>
int main()
{
    int a,b,c,n;
    scanf("%d%d%d",&a,&b,&c);
    n=c/b;
    if(c%b!=0)
        n++;
    printf("%d",a-n);
    return 0;
}

发表于 2021-07-06 22:29:51 回复(0)
n,h,m = map(int, input().split())
for i in range(1,m+1,h):
    n -= 1
print(n)
发表于 2022-01-19 14:49:39 回复(0)
#include<stdio.h>
int main() {
    int n,h,m;
    while(scanf("%d%d%d",&n,&h,&m)!=EOF)
        printf("%d\n",n - (m+h-1)/h);
}
应该是C最简洁的写法了
发表于 2021-08-31 23:32:35 回复(0)
#include <iostream>
using namespace std;
int main(){
    int n,h,m;
    cin>>n>>h>>m;
    int s=(m%h==0)?(n-m/h):(n-m/h-1);
      cout<<s<<endl;
    return 0;
}

发表于 2020-03-18 17:43:53 回复(0)
#include<stdio.h>
int main()
{
    int n,h,m,s;
    scanf("%d%d%d",&n,&h,&m);
    if(m%h==0)
        s=n-(m/h);
    else
        s=n-(m/h+1);
    printf("%d",s);
    return 0;
}


发表于 2021-02-24 22:59:08 回复(0)
#include <stdio.h>
#include<math.h>
int main() {
    int n,h,m;
    scanf("%d %d %d",&n,&h,&m);
    //h单位,n总数

    int drink=m/h;

    printf("%d\n",m%h==0?n-drink:n-drink-1);
    

    return 0;
}

发表于 2024-06-29 23:14:21 回复(0)
#include <stdio.h>

int main() {
    int a=0;
    int b=0;
    int c=0;
    scanf("%d %d %d",&a,&b,&c);
    printf("%d",a-c/b-(c%b+b-1)/b);
    return 0;
}

发表于 2022-12-04 20:56:29 回复(2)
#include <stdio.h>
int main()
{
    int a,b,c;
    
    scanf("%d %d %d",&a,&b,&c);
    if(c%b==0)
    printf ("%d",a-c/b);
    else
        printf("%d",a-c/b-1);
    return 0;
}
发表于 2022-07-21 09:44:59 回复(0)
n,h,m=map(int, input().split())
if m<=n*h:
    if m%h==0:
        print(n-m//h)
    else:
        print(n-(m//h+1))
This is my python code.
发表于 2020-06-15 20:01:26 回复(0)
这个题不难,计算量也不大。需要一点点理解就成。首先有三个变量:n h m。n代表的是一共的酸奶盒数,h是KiKi每隔h分钟后再喝一盒,m是总的时间。很显然在开始计时的时候,他先喝了一盒,此时剩下7盒,过了5分钟后又喝了一盒,剩下6盒。那么总的时间是5 + 5 + 5(< 16)这期间喝了三盒。而一共喝了1 + 1 + 1 + 1 = 4盒,所以最后还剩下4盒。(这里可以写一个循环)
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n, h, m;
    int t;
    cin >> n >> h >> m;
    t = h;
    if(m <= (h * n)){
        n -= 1;
        while(m - t > 0){
            n--;
            t += h;
        }
        cout << n << endl;
    }
    return 0;
}
t是一个时间变量,m <= h * n 是题目中给的判断关系。

发表于 2020-05-31 12:12:35 回复(1)
#include <stdio.h>//题目没出好,还应考虑在m分钟之前就将牛奶喝完

int main() {
    int n, h, m;
    scanf("%d %d %d", &n, &h, &m);
    if(m<=n*h)
    {
        if(m%h==0)
        {
            printf("%d", n-(m/h));
        }
        else
        {
            printf("%d", n-(m/h+1));
        }
    }
   
   
   
   
    return 0;
}
发表于 2024-05-31 14:02:21 回复(0)