TB椰程 TypeBuddy 打字搭子

练35.1 传输数据

C++语法 · 循环结构 · 代码 · cpp · 难度 4/5 · 共 610 字

每秒每人传 k 人,求传遍全网的秒数

  • C++语法
  • 练习

正文

// 原题:https://oj.yecheng.tv/p/P211
// 题意:n 台电脑中 1 台有数据,
//       每台电脑一秒最多向 k 台电脑传输,
//       求数据传遍所有电脑最少需要几秒。
// 思路:每秒新增的电脑数按 k 倍增长,
//       累加知道数据的人数,达到 n 就停。
#include <iostream>
using namespace std;

int main() {
    long long n, k;
    cin >> n >> k;
    if (n == 1) {
        cout << 0 << endl;
        return 0;
    }
    if (k == 1) {
        // 每秒只多 1 台
        cout << n - 1 << endl;
        return 0;
    }
    long long known = 1, add = 1, sec = 0;
    // 不知道要传几秒,传满 n 台为止
    while (known < n) {
        add *= k;
        known += add;
        sec++;
    }
    cout << sec << endl;
    return 0;
}

C++语法 · 循环结构的其它内容

打字首页 · 词库画廊 · 编程打字 · 指法入门 · 天梯榜 · 数据分析 · 班级课堂 · 关于我们
椰程 TypeBuddy 打字搭子 —— 键盘指法练习 · 单词记忆 · 班级课堂 · 在线 PK