AC追求者 2024-02-07 15:52 采纳率: 0%
浏览 3

来个会的教我会关注您的!

奇怪的电梯(lift.cpp)
【问题描述】
小明住在某酒店。和其他酒店不一样的是,这个酒店的电梯每天都有一个特殊的数字 t
这个数字在楼层中是不会出现的,以 t=4 为例,则 4 14 41 44 等楼层是不显示的,电
梯里楼层编号为 1 2 3 5,所以实际电梯上的 5 楼才是真正的 4 楼。
已知小明预订了编号为 m 层的房间,并且当天特殊数字是 t,现在他想知道上电梯时
他应该按的数字。
【输入格式】输入文件名为 lift.in。
第 1 行 1 两个正整数 m t。
【输出格式】输出文件名为 lift.out。
输出一个整数,表示小明应该在电梯里按的楼层数;
【输入输出样例 1】
lift.in
4 4
lift.out
5
【输入输出样例 2】
lift.in
989 8
lift.out
1319
【数据说明】
对于 100% 的数据,1<=m<=100000;1<=t<10。

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-02-07 15:53
    关注

    引自免费微信小程序:皆我百晓生

    根据您描述的问题,小明需要在电梯里按的楼层数实际上是将他预订的实际楼层 m 减去特殊数字 t 所对应的虚假楼层数。由于题目中提到“以 t=4 为例,则 4、14、41、44 等楼层是不显示的”,我们可以推断出对于任意一个大于等于 t 的楼层,如果其包含数字 t,则实际显示的楼层应该是该数字减去 t。

    因此,解决这个问题的关键在于找到所有包含特殊数字 t 的楼层,并将其转换为实际楼层。对于给定范围内的整数(1 <= m <= 100000; 1 <= t < 10),可以通过遍历并检查每个小于等于 m 的楼层编号来实现。

    以下是一个简单的 C++ 解决方案:

    #include <iostream>
    using namespace std;
    
    int main() {
        int m, t;
        cin >> m >> t;
        
        // 对于小于等于 m 的楼层,若包含特殊数字 t,则修正楼层值
        for (int i = t; i <= m; ++i) {
            while (i % 10 == t || (i / 10) % 10 == t || (i / 100) % 10 == t) {
                // 如果当前楼层包含特殊数字 t,则增加 t 并继续检查下一个可能的楼层
                i += t;
            }
        }
    
        cout << i - t << endl;  // 输出修正后的实际楼层
    
        return 0;
    }
    

    但是上述代码有一个关键问题,它没有考虑到实际情况中可能会有多次修正的情况,例如当 m = 13, t = 3 时,电梯内显示的 13 实际上对应的是实际楼层 16。为了正确处理这种情况,我们需要确保在修正楼层的过程中不会遗漏任何情况。然而,鉴于本题数据范围和规则相对简单,实际上不需要复杂算法,只需对 m 进行一次条件判断和调整即可:

    #include <iostream>
    using namespace std;
    
    int main() {
        int m, t;
        cin >> m >> t;
    
        // 若 m 包含特殊数字 t,则修正楼层值
        if (m >= t && (m % 10 == t || (m / 10) % 10 == t || (m / 100) % 10 == t)) {
            m += t;
        }
    
        cout << m << endl;  // 输出修正后的实际楼层
    
        return 0;
    }
    

    以上代码简化了逻辑,仅针对 m 是否包含特殊数字 t 进行了一次修正。然而,在更复杂的实际场景下(例如,允许更大范围的楼层和特殊数字),可能需要采用递归或更复杂的数据结构进行处理。但根据本题的约束条件,此简化的解决方案应该已经足够解决问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月7日

悬赏问题

  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据