输入一个整数
代表询问的行数。
输出一个整数,代表第
行中第一个偶数出现的位置。特别地如果第
行中没有偶数,则输出
。
4
3
3
2
1
-1
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int n = in.nextInt();
if (n == 1 || n == 2) {
System.out.println(-1); // 前两行没有偶数
} else if (n % 2 == 1) {
System.out.println(2); // n % 2余 1 时,偶数在位置2
} else if (n % 2 == 0 && n % 4 != 0) {
System.out.println(4); // n是偶数但非4的倍数时,偶数在位置4
} else if (n % 4 == 0) {
System.out.println(3); // n是4的倍数,偶数在位置3
}
/*
int maxWidth = 2*n -1;
//创建并初始化杨辉三角数组(使用最大宽度),n==1000时,会出现内存溢出,使用打印功能找到规律,然后直接按照规律 输出
int[][] triangle=new int[n][maxWidth];
triangle[0][n-1]=1;//第一行中间位置为1
//生成第2行到第n行
for (int i = 1;i<n;i++){
for (int j = 0;j<maxWidth ;j++){
//上一行对应的三个位置元素之和
int left = (j-1>=0)? triangle[i-1][j-1] : 0;
int center = triangle[i-1][j];
int right = (j+1<maxWidth) ? triangle[i-1][j+1] : 0;
triangle[i][j] = left + center + right;
}
}
//打印杨辉三角
for (int i = 0; i< n;i++){
for (int j = 0 ;j < maxWidth;j++){
System.out.print(triangle[i][j] + "\t" );
}
System.out.println();
}
//输出第n行的第一个偶数
for (int j = 0;j<maxWidth;j++){
if (triangle[n-1][j] % 2 == 0 && triangle[n-1][j] != 0){
System.out.println(n+":"+(j+1));
break;
}
}
*/
}
}
} import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n =in.nextInt();
if(n==1||n==2){
System.out.println("-1");
return;
}
if(n%2!=0){
System.out.println("2");
return;
}
if(n%4!=0){
System.out.println("4");
return;
}else{
System.out.println("3");
return;
}
}
} 找规律得出以上结果。
import java.util.Scanner;
// 从第3行开始第n行中第一个偶数出现的位置以{2,3,2,4}循环
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n=in.nextInt();
int res=-1;
int[] index={4,2,3,2};
if(n>2){
res=index[(n-2)%4];
}
System.out.println(res);
}
} import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
//生成变形杨辉三角二维数组
int row = in.nextInt();
int column = 2 * row - 1;
int[][] arrays = new int[row][column];
arrays[1-1][row-1] = 1;//第一行最中间的元素赋值1
for (int i = 1;i<row; i++){
for(int j = 0;j < column; j++){
if(j-1 >=0 && j+1<column){
arrays[i][j] =arrays[i-1][j-1] + arrays[i-1][j] + arrays[i-1][j+1];}
if(j-1 < 0){
arrays[i][j] = 0 + arrays[i-1][j] + arrays[i-1][j+1];
}
if(j+1 >= column){
arrays[i][j] = arrays[i-1][j-1] + arrays[i-1][j] + 0;
}
}
}
//最后一行,计算第一个偶数位置
int count = 0;
for(int k = 0; k < (column + 1)/2 ; k++){
if (arrays[row-1][k] % 2 == 0){
System.out.println(k+1);//输出第一个偶数位置
break;
}
else{
count++;//没有找到则记数
}
}
if(count == (column + 1)/2 ){
System.out.println(-1);
}
}
}
} 正常逻辑没问题,到10000时耗尽堆内存了,它奶奶的
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int row = in.nextInt();
if (row == 1 || row == 2){
System.out.println(-1);
}else if ((row & 1) == 1){//奇数
System.out.println(2);
}else if ((row & 2) == 2){//偶数但不是4的倍数
System.out.println(4);
}else
System.out.println(3);//4的倍数
}
} import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int a = in.nextInt();
if (a < 3) {
System.out.println("-1");
return;
}
if((a & 1) == 1) {
System.out.println("2");
return;
}
if((a & 2) == 2) {
System.out.println("4");
return;
}
System.out.println("3");
return;
}
}
} import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
int len = in.nextInt();
if (len > 2 && len % 2 == 1) {
System.out.println(2) ;
return;
}
if (len > 500) {
System.out.println(3) ;
return;
}
int[] old = new int[1];
int[] ne = new int[1];
ne[0] = 1;
//组织树
for (int i = 2; i <= len; i++) {
old = ne;
ne = new int[i * 2 - 1];
for (int j = 0; j < ne.length; j++) {
int s1 = j - 2;
int s2 = j - 1;
int s3 = j;
int sum = 0;
if (s1 >= 0 && s1 <= old.length - 1) {
sum = sum + old[s1];
}
if (s2 >= 0 && s2 <= old.length - 1) {
sum = sum + old[s2];
}
if (s3 >= 0 && s3 <= old.length - 1) {
sum = sum + old[s3];
}
if (i > 0) {
// System.out.print(sum + " ") ;
}
ne[j] = sum;
}
if (i > 0) {
// System.out.println("") ;
}
}
for (int i = 0; i < ne.length; i++) {
if (ne[i] % 2 == 0) {
System.out.println(i + 1) ;
return;
}
}
System.out.println(-1) ;
}
} import java.util.ArrayList;
import java.util.Scanner;
public class T53 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
int n = sc.nextInt();
if (n <= 2) {
System.out.println("-1");
return;
}
if (n % 2 != 0) {
System.out.println("2");
return;
}
int flag = 3;
ArrayList<Integer> reference = new ArrayList<>();
reference.add(1);
reference.add(2);
reference.add(3);
reference.add(2);
reference.add(1);
while (true) {
ArrayList<Integer> current = new ArrayList<>();
int length = 2 * (flag+1) - 1;
//对当前行数据生成
for (int i = 1; i <= length; i++) {
if (i == 1 || i == length) {
current.add(1);
continue;
}
if (i == 2) {
current.add(reference.get(0) + reference.get(1));
continue;
}
if (i == length - 1) {
current.add(reference.get(reference.size() - 1) + reference.get(reference.size() - 2));
continue;
}
current.add(reference.get(i - 3) + reference.get(i - 2) + reference.get(i - 1));
}
reference = current;
flag++;
if (flag == n) {
break;
}
}
for (int i = 0; i < reference.size(); i++) {
if (reference.get(i) % 2 == 0) {
System.out.println(i + 1);
return;
}
}
}
}
} import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int [] m = {2, 3, 2, 4};
System.out.println(n >= 3 ? m[(n - 3) % 4] : -1);
}
} import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int N = in.nextInt();
int[][] dp = new int[N + 1][2 * N];
dp[1][1] = 1;
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= 2 * N - 1; j++) {
for (int k = j - 2; k <= j; k++) {
if (k < 1 || k > (2 * (i - 1) - 1)) {
continue;
}
dp[i][j] += dp[i - 1][k];
}
}
}
int ans = -1;
for (int m = 1; m <= 2 * N - 1; m++) {
if (dp[N][m] % 2 == 0) {
ans = m;
break;
}
}
System.out.println(ans);
}
}
}