牛客网高校机试题/编程题/王道机试指南-习题(不定期更新,待续)

王道机试指南-习题(不定期更新,待续)


目录

王道机试指南-习题(不定期更新,待续)

第二章 暴力求解

2.1 枚举

习题2.2 百鸡问题-哈工大上机

习题2.3 Old Bill-上交大机试


第二章 暴力求解

2.1 枚举

习题2.2 百鸡问题-哈工大上机

F&Q1:在Visual Studio中,scanf被认为是不安全的,需要用scanf_s代替。

F&Q2:考虑到z/3之后,Z变为整数,必然是≤(double)z/3,这将有可能引起式子的判断失误,因为 / 是保留整数而舍去小数位的。故应该将z/3进行强制转换,但是仅仅转换z是不够的的,会因为整个式子,只有z是double型而其他数(x,y)都是整型引起错误,所以应该将三个数都强制转换。

习题2.3 Old Bill-上交大机试

F&Q1:由于最贵价格是需要最后输出的(循环结束之后),但因此万位数和个位数也只能在循环结束之后输出,因此需要加一个flag用来标记最终的符合最贵价格的万位数和个位数。

F&Q2:最贵价格可以先定义一个初值,之后每遇到一个比其大的价格,就被替换掉,最终取得最贵价格。

F&Q3:依照题目要求,火鸡的价格必须是整数,所以替换最贵价格的操作和对应的万位数、个位数的操作应该在判断伙计的价格是否是整数的条件语句大括号内

F&Q4:整个程序应当有一定的容错性,当所有的万位数和个位数组合无法除尽火鸡个数时,此时应当是无解,这也是正好是flag标记存在的意义。

#include<iostream>

#include<iostream>


using namespace std;


int main() {

    int N;

    int X;

    int Y;

    int Z;

    int maxPrice = 0;

    while (scanf_s("%d%d%d%d", &N, &X, &Y, &Z) != EOF) {

        int i;  //定义万位

        int j;  //定义个位

        int flag1=0;

        int flag2=0;

        //遍历所有可能的总价格

        for (i = 1; i <= 9; i++) {

            for (j = 0; j <= 9; j++) {

                int Remainder = (i * 10000 + X * 1000 + Y * 100 + Z * 10 + j) % N;

                int result= (i * 10000 + X * 1000 + Y * 100 + Z * 10 + j) / N;

                if (Remainder % N == 0) {

                    if (result > maxPrice) {

                        maxPrice = result;

                        flag1 = i;

                        flag2 = j;

                    }

                }

            }

        }

        if (flag1 == 0) {

            printf("0");

        }

        else {

            printf("%d %d %d\n", flag1, flag2, maxPrice);

        }

    }

    return 0;

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柒柒星球

(๑•̀ㅂ•́)و✧给点儿赏赐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值