题目
Case 1:
输入:
20
输出:
2
1
1
0
解释:
报数过程:
1 2 3 4 5 6 7 甲:1 乙:2 丙:3 丁:4 甲:5 乙:6 丙:跳过 丁:8 甲:9 乙:10 丙:11 丁:12 甲:13 乙:跳过 丙:15 丁:16 甲:跳过 乙:18 丙:19 丁:20 甲:跳过 乙:22 丙:23 丁:24 在丁报出24后,4人总计报出了24个数,游戏结束。
Case 2:
输入:
66
输出:
7
5
11
5
子任务:
测试点1、2、3、4和5,保证n<100
测试点6、7、8、9和10,保证n<666
分析
分析: 此题中,4次一循环,报数为7的倍数或数字含有7时跳过,此时总数n将加1。对4取余即可对甲乙丙丁跳过次数进行计数。
源码
#include <iostream>
#include <algorithm>
using namespace std;
int JSeven(int n)
{
if (n % 7 == 0)
{
return 1;
}
while (n)
{
if (n % 10 == 7)
{
return 1;
}
n /= 10;
}
return 0;
}
int main()
{
int n;
cin >> n;
int a[4] = { 0 };
for (int i = 1; i <= n; i++)
{
if (JSeven(i))
{
n++;
a[(i-1) % 4]++;
}
}
for (int i = 0; i < 4; i++)
{
cout << a[i] << endl;
}
return 0;
}