开灯问题
法一:开1关-1
代码如下:
import java.util.Scanner;
public class fortynine {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
int n=reader.nextInt();
int[] a=new int[n+1];int sign=1;//1开,-1关
for(int i=1;i<=n;i++) {//每号同学
sign=sign*(-1);
for(int j=i;j<=n;j++) {//每盏灯
if(j%i==0) {
a[j]=sign;
}
}
}
for(int i=1;i<=n;i++) {
if(a[i]==1) {
System.out.printf("%d ",i);
}
}
}
}
运行结果:
法二:开1关0
代码:
import java.util.Scanner;
public class ninetyfive {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
int n=reader.nextInt();
int[] a=new int[n+1];int sign=1;//1开,0关
for(int i=1;i<=n;i++) {//每号同学
sign=1-sign;
for(int j=i;j<=n;j++) {//每盏灯
if(j%i==0) {
a[j]=sign;
}
}
}
for(int i=1;i<=n;i++) {
if(a[i]==1) {
System.out.printf("%d ",i);
}
}
}
}