关于#c++#的问题:即这串数字中第n个数字

数学老师生病了,学校安排体育老师代课,体育老师为了考查同学们的观察力,他在黑板上写了这样一串数字:1 2 3 4 5 6 7 8 2 2 3 4 5 6 7 8 3 2 3 4 5 6 7 8 ……,100 2 3 4 5 6 7 8……

请问这串数字中第n个到底是几,你能算出来吗?

输入
一行,一个正整数n(1≤n≤10^6),表示小慧想知道这串数字中的第n个是几。

输出
一行,一个正整数,即这串数字中第n个数字。

#include <stdio.h>
int getN(int n)
{
    if (n % 8 == 0) return 8;
    if (n % 8 == 1) return n / 8 + 1;
    return n % 8;
}
int main()
{
    int n;
    scanf("%d", &n);
    printf("%d ", getN(n));
    return 0;
}

【以下回答由 GPT 生成】

思路:观察题目中给出的数字序列,可以发现以下规律:

  1. 数字序列中的前8个数字为1到8;
  2. 从第9个数字开始,每8个数字为一个循环,循环内的数字依次为2到8;
  3. 在每个循环中,循环索引除以8的余数即为该位置上的数字。

因此,可以通过求余数的方式来确定第n个数字所在的循环以及其在循环中的位置。

解决方案如下所示:

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    int cycle = (n - 1) / 8; // 求循环的次数
    int position = (n - 1) % 8; // 求在循环中的位置

    int digit;
    if (position == 0) {
        digit = cycle + 1;
    } else {
        digit = position + 1;
    }

    cout << digit << endl;

    return 0;
}

代码解释:

  1. 首先,使用cin函数从标准输入中读取一个正整数n;
  2. 然后,通过求商计算循环的次数,将结果赋值给变量cycle
  3. 再通过求余数计算在循环中的位置,将结果赋值给变量position
  4. 根据循环的位置,判断所在循环中数字的取值,并将结果赋值给变量digit
  5. 最后,使用cout函数将结果打印到标准输出中。

测试样例:

输入:25 输出:2

输入:44 输出:5

输入:100 输出:8



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^