题解 | #操作#

操作

https://ac.nowcoder.com/acm/contest/99072/I

题解:操作

问题描述

给定一个整数 (n),我们需要执行 (k) 次操作,每次操作根据 (n) 是否是 200 的倍数进行不同的处理。

操作规则:

  1. 如果 (n) 是 200 的倍数,则将 (n) 除以 200。
  2. 否则,将 (n) 视为字符串,并在其末尾附加 "200"(即将 (n) 乘以 1000 然后加 200)。

输入描述:

  • 输入包含两个整数 (n) 和 (k),其中 (n) 表示初始整数,(k) 表示需要执行的操作次数。

输出描述:

  • 输出经过 (k) 次操作后的结果。

示例1:

输入:

7 1

输出:

7200

示例2:

输入:

2021 4

输出:

50531

备注:

  • 1 ≤ (n) ≤ 100,000
  • 1 ≤ (k) ≤ 20

解题思路

本题的核心是模拟给定的操作。我们需要执行的操作次数 (k) 最大为 20,且每次操作都比较简单。操作的步骤如下:

  1. 判断 (n) 是否是 200 的倍数。
  2. 如果是,除以 200。
  3. 如果不是,将 (n) 当作一个字符串处理,拼接 "200" 到末尾,实际上是将 (n) 乘以 1000 加 200。

关键点:

  1. 字符串拼接操作:将数字变成字符串并追加 "200" 的操作可以通过数学计算模拟,直接把 (n) 乘以 1000 后加上 200 即可。
  2. 循环操作:需要进行 (k) 次操作,且每次操作的结果会影响下一次操作的输入。

代码实现

#include<bits/stdc++.h>
using namespace std;

int main() {
    long long n;
    int k;
    cin >> n >> k;
    
    // 执行 k 次操作
    for (int i = 1; i <= k; i++) {
        if (n % 200 == 0) {
            n /= 200;  // 如果是 200 的倍数,除以 200
        } else {
            n = n * 1000 + 200;  // 否则,拼接 "200"
        }
    }

    cout << n << endl;  // 输出结果
    return 0;
}

呃呃呃,这道题没啥好说的,还是写一下吧

全部评论

相关推荐

11-13 20:16
已编辑
厦门理工学院 软件测试
专业嗎喽:硕佬,把学校背景放后面几段,学校背景双非还学院,让人看了就不想往下看。 把实习经历和个人奖项放前面,用数字化简述自己实习的成果和掌握的技能,比如负责项目一次通过率90%,曾4次发现项目潜在问题风险为公司减少损失等等
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务