一、问题描述
二、问题分析
这里补充一点,由于只有100张牌按序排列,故n不大于100,不用考虑的过于复杂。
此题的解决想法比较简单,按题干顺序编程即可。但在结果出来后,会发现结果具有一致的某种性质,同时这个翻牌游戏与数的因子数目具有一定的关系。那么,在做题前找到这个关系就可以很容易的解决该问题,但这不妨碍我们暴力解决,暴力代码如下。
三、代码实现
1.C/C++ 实现
#include <iostream>
using namespace std;
int main()
{
bool cards[101];
memset(cards, true, sizeof(cards));
// 逐一反面
for (int i = 2; i < 101; i++)
{
for (int j = i; j < 101; j += i)
{
cards[j] = !cards[j];
}
}
// 输出
for (int i = 1; i < 101; i++)
{
if (cards[i])
{
cout << i << endl;
}
}
return 0;
}
2.Python实现
# coding=utf-8
def gaming():
# 用 True 表示反面
cards = [True] * 101
for i in range(2, 101):
j = i
while j < 101:
cards[j] = not cards[j]
j += i
return tuple(cards)
if __name__ == '__main__':
cards = gaming()
for i in range(1, 101):
if cards[i]:
print(i)