本文共 1137 字,大约阅读时间需要 3 分钟。
有n盏灯,编号为1~n。第一个人把所有灯打开,第二个人把所有编号为2的倍数的开关按下(这些灯将关闭)。第3个人按下所有编号为3的倍数的开关(开着的会关,关的会打开),依次类推。一共有k个人。问最后有哪些灯开着。输入n和k,输出开着的灯编号。k<=n<=1000;
样例输入:7 3
样例输出:1 5 6 7
import java.util.Scanner;import java.util.HashSet;import java.util.Set;class calculate{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); int[] light = new int[n]; for(int i = 0; i < n;i++){ light[i] = -1; } for(int i = 1;i<=k;i++){ for(int j = 0;j < n;j++){ if((j+1) % i == 0){ light[j] = -light[j]; } } } for(int i = 0;i < n;i++){ if(light[i] > 0){ System.out.printf("%d ",(i+1)); } } }}
在n*n的方阵中填入1,2,3,4,5....,n*n,要求蛇形填数,例如 n = 4 时方阵为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
import java.util.Scanner;class calculate{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int a[][] = new int[n][n]; for(int i =0;i= 0 && a[x][y-1] == 0){a[x][--y] = ++temp;} while(x-1 >= 0 && a[x-1][y] == 0){a[--x][y] = ++temp;} while( y+1 < n && a[x][y+1] == 0){a[x][++y] = ++temp;} } for(int i = 0;i
转载地址:http://auqxi.baihongyu.com/