题目描述:
有 N 个灯放在一排,从 1 到 N 依次顺序编号。有 N 个人也从 1 到 N 依次编号。1 号将灯全部关闭,2 将
凡是 2 的倍数的灯打开;3 号将凡是 3 的倍数的灯作相反处理(该灯如为打开的, 则将它关闭;如关闭的,
则将它打开)。以后的人都和 3 号一样,将凡是自己编号倍数的灯作相反处理。
编程实现:第 N 个人操作后,按顺序输出灯的状态。(1-表示灯打开,0-表示灯关闭)
输入:
n,灯的个数
n不超过100
输出:
灯的状态,01 序列,中间无空格。
样例输入;
2
样例输出:
01
其实这道题分析题意可知就是与完全平方数有关,但是内网是不让你过的(心机心机心机),所以咱就老老实实正常写吧,看代码就能理解:
#include<cstdio> using namespace std; int main() { int i,j,n,l=0; scanf("%d",&n); bool a[n+1]; for (j=1;j<=n;j++) { a[j]=0; } for (i=2;i<=n;i++) { for (j=1;j<=n;j++) { if (j%i==0) a[j]=!a[j]; } } for (j=1;j<=n;j++) { printf("%d",a[j]); } return 0; }
这里的=!和!=不是一个意思哦。