数数练习

    xiaoxiao2026-05-24  1

    数数练习c++实现

    题目描述 爸爸教2岁的宝宝练习数数,将n 个玩具排成一行。所有玩具从左到右编号为 1 到 n。宝宝从左到右开始数数,当编号为 n 的玩具数完 n 之后,接着从右往左数,即编号为n-1 的玩具数 n+1,然后编号为 n-2 的玩具数 n+2,以此类推。当编号为1的玩具数完之后,方向又变成从左到右,依次类推。 为了鼓励宝宝坚持数数,每当宝宝数到7 或者包含7、还有7 的倍数时,爸爸会竖起大拇指以示鼓励。下表是 n=4 的数数情况(X 表示爸爸竖起大拇指)。当编号为 3 的玩具遇到爸爸第3次竖起大拇指的时候,宝宝实际上数到了 27。 玩具    1    2    3    4    3    2    1    2    3    4    3    2    1    2   3    4    3   2    1    2    3    4    3    2    1    2    3 数数    1    2    3    4    5    6    X    8    9   10  11  12  13   X   15  16  X   18  19  20   X  22  23  24  25  26   X 给定 n,m 和 k,你的任务是计算当编号为 m 的玩具遇到爸爸第 k 次竖起大拇指时,宝宝实际上数到了几。

    #include<iostream> #include<algorithm> #include<math.h> using namespace std; bool check_if(int count) { if (count % 7 == 0) { return true; } int n = count;; while (n>0) { n = count % 10; if (n == 7) { return true; } n = n / 10; } return false; } int main() { int n, m, k; while (cin >> n >> m >> k) { if (n == 0 && k == 0 && k == 0) break; int count = 1; int i_k = 0; int flag = 1; if (count < n && check_if(m)) { i_k++; if (i_k == k) { cout << count << endl; continue; } } count = n + 1; while (true) { if (flag) { count = count + (n - 1 - m); if (check_if(count)) { i_k++; if (i_k == k) { break; } } count = count + m; flag = 0; } else { count = count + (m-2); if (check_if(count)) { i_k++; if (i_k == k) { break; } } count = count + 1 - m+n; flag = 1; } } cout << count << endl; } }

    转载请注明原文地址: https://ju.6miu.com/read-1310032.html
    最新回复(0)