N盏灯排成一排,从1到N按顺序依次编号.有N个人也从1到N依次编号.第1个人将灯全部关闭.第2个人将凡是2的倍数的灯都打

N盏灯排成一排,从1到N按顺序依次编号.有N个人也从1到N依次编号.第1个人将灯全部关闭.第2个人将凡是2的倍数的灯都打开.第3个人将凡是3的倍数的灯全部做相反处理.以后的人都和3号一样将自己倍数的灯都做相反处理.当N个人操作之后拿几个灯是亮的
就当有100个灯!
wyzc2005 1年前 已收到1个回答 举报

紫雨迷离 幼苗

共回答了17个问题采纳率:76.5% 举报

建议:采用图形法,显示每一盏灯,并为每一盏灯加边框,用不同的颜色显示开灯或关灯.
例如:当输入N为7时;
当第一个人操作时
则输出结果为:
第1盏灯是黑的
第2盏灯是黑的
第3盏灯是黑的
第4盏灯是黑的
第5盏灯是黑的
第6盏灯是黑的
第7盏灯是黑的
当第二个人操作时
则输出结果为:
第1盏灯是黑的
第2盏灯是亮的
第3盏灯是黑的
第4盏灯是亮的
第5盏灯是黑的
第6盏灯是亮的
第7盏灯是黑的
当第三个人操作时
则输出结果为:
第1盏灯是黑的
第2盏灯是亮的
第3盏灯是亮的
第4盏灯是亮的
第5盏灯是黑的
第6盏灯是黑的
第7盏灯是黑的
… … …
当第七个人操作时
则输出结果为:
第1盏灯是黑的
第2盏灯是亮的
第3盏灯是亮的
第4盏灯是黑的
第5盏灯是亮的
第6盏灯是亮的
第7盏灯是亮 的
我的答案:
#include
using namespace std;
int i;
struct light
{
int id; //灯号
int flag ; //标志
};
void main()
{
int n[11]; //人
light lighto[11]; //灯
for( i=1;i

1年前

7
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.012 s. - webmaster@yulucn.com