杭电oj —— 2053

还挺有趣的,写的时候第一次超时了,用了双重循环

                     第二次就索性直接只计算了第n盏灯

                     第三次发现,更本就不需要数组,哈哈哈

0、1变换有三种方法:

//法一:
if(arr[n-1] == 0) {
  arr[n-1] = 1;
} else {
  arr[n-1] = 0;
}
					
//法二:
arr[n-1] = (arr[n-1] + 1) % 2;
					
//法三:
arr[n-1] = arr[n-1] ^ 1;

上代码:

package com.demo2;
import java.util.Scanner;
public class HDU_oj2053_2 {
	public static void main(String[] args) {
		Scanner sn = new Scanner(System.in);
		while(sn.hasNext()) {
			int n = sn.nextInt();
			int[] arr = new int[n]; //初始全是零,即所有的灯初始全是关着的
			for(int i = 1; i <= n; i++) { //i表示次数
				//既然题目要求第n个,拿我们每一次就至改变第n个的值
				if(n % i == 0) {
					/*
					 * 法一:
					 * if(arr[n-1] == 0) {
						arr[n-1] = 1;
					} else {
						arr[n-1] = 0;
					}*/
					
					/*法二:
					 * arr[n-1] = (arr[n-1] + 1) % 2;*/
					
					/*法三:*/
					arr[n-1] = arr[n-1] ^ 1;
				}
			}
			System.out.println(arr[n-1]);
		}
		
		
		sn.close();
	}

}

猜你喜欢

转载自blog.csdn.net/LiLi_code/article/details/88553806