数数练习

来源:互联网 发布:蛐蛐饲料 淘宝 编辑:程序博客网 时间:2024/06/02 00:14

数数练习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;}}

0 0