• 每日一题·AC


    2、小丽好朋友的生日快到了,她打算做一些折纸放在幸运罐中作为生日礼物。小丽计划总共 需要a颗星星以及b只纸鹤。现在市场上卖的到的星星纸(折小星星的专用纸)一张可以折c颗小星星,一张纸鹤纸(折纸鹤的专用纸)可以折d只小纸鹤。她准备一共买k张折纸,要优先满足星星纸的需求,剩余的再去买纸鹤纸,请你帮忙计算一下,买来的k张折纸能否满足小丽的折纸需求,能满足的话分别给出需要购买的星星纸和纸鹤纸的数量,不能的话则输出-1。若有满足条件的折纸方案,星星优先折叠,剩下的折纸都属于纸鹤。

    输入格式 第一行输入一个整数T,表示共有T组情况需要判断。 接下来T行,每行包含5个整数a,b,c,d,k。 其中1<=T,a,b,c,d,k<=100

    输出格式 输出T行,如果可以满足要求,输出两个整数x,y以空格分隔,分别表示需要采购的星星纸数量和纸鹤纸数量。 如果不存在合理方案,输出-1。

    输入输出样列 输入样例1:

    1
    10 6 3 4 6

    输出样例1:

    4 2

    输入样例2:

    3
    7 5 4 5 8
    7 5 4 5 2
    20 53 45 26 4

    输出样例2:

    2 6
    -1
    1 3

    思路

    首先,读取输入的组数T,并进行循环处理每一组情况。在每组情况中,读取需要的星星数量a、纸鹤数量b、星星纸折叠数量c、纸鹤纸折叠数量d以及可购买的折纸数量k。
    ​
    接下来,使用函数panduan判断需要购买的星星纸数量,根据星星纸折叠数量c和需要的星星数量a计算出所需的星星纸张数t。如果需要购买的折纸数量k大于t,则进一步判断剩余的折纸能否满足纸鹤的需求。
    ​
    如果剩余的折纸数量大于等于b所需的纸张数量,说明可以满足需求,输出所需的星星纸数量t和剩余的折纸数量k-t即可。否则,输出-1表示无法满足需求。
    ​
    最后,循环结束后返回0,表示程序正常结束。

    AC:

    #include
    ​
    int panduan(int a,int b)//a/c可能是小数,而纸数为整数
    {
        int t;
        if(a%b!=0)
        {
            t=a/b+1;
        }
        else
        {
            t=a/b;
        }
        return t;
    }
    ​
    int main()
    {
        int n;
        int a,b,c,d,k;
        scanf("%d",&n);
        while(n--)
        {
            scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);
            int t=panduan(a,c);
            if(k>t)
            {
                if((k-t)*d>=b)
                {
                    printf("%d %d\n",t,(k-t));
                }
                else
                {
                    printf("-1\n");
                }
            }
            else
            {
                printf("-1\n");
            }
        }
        
        return 0;
        
    }

    简化代码:

    #include 
    ​
    int main()
    {
        int T;
        scanf("%d", &T);
        while (T--)
        {
            int a, b, c, d, k;
            scanf("%d %d %d %d %d", &a, &b, &c, &d, &k);
            int x = (a + c - 1) / c; // 计算需要引入的星星纸数量
            if (x > k)
            {
                printf("-1\n");
            }
            else
            {
                int y = (b + d - 1) / d * (k - x); // 计算需要的纸鹤纸数量
                printf("%d %d\n", x, y);
            }
        }
        return 0;
    }
    ​

     

  • 相关阅读:
    一起学docker系列之三docker的详细安装步骤
    retimer芯片调式总结
    基于java的购物中心商铺管理系统的设计与实现/商铺管理系统
    React简介---jsx 语法练习
    【3D图像分割】基于Pytorch的 VNet 3D 图像分割4(改写数据流篇)
    Spring Boot 如何快速过滤出一次请求的所有日志?
    Python学习笔记第四十二天(NumPy 字符串函数)
    2022年全国最新消防设施操作员(中级消防设施操作员)题库及答案
    从文件下载视角来理解Web API
    基于遗传算法GA的机器人栅格地图最短路径规划,可以自定义地图及起始点(提供MATLAB代码)
  • 原文地址:https://blog.csdn.net/weixin_74384251/article/details/133756268