USACO 1.2.5 Palíndromos dobles JAVA

Es muy similar al anterior 1.2.4.

La idea general no es difícil. Lo que tienes que hacer es guardar los datos de entrada primero y registrarlos como n y S, y luego n se usa para contar, y te puede interesar más tarde; y S se usa para marcar el punto de inicio de la discusión, puedes Un bucle for lo usa. Lo que tenemos que hacer ahora es escribir un ciclo for. Observa los requisitos del tema. El ciclo for debe comenzar con S + 1 y discutir el pasado uno por uno. Para cada número, debes verificar si se puede presentar en dos bases. Características de Palíndromo, por lo que es posible que deba crear una variable booleana como signo para marcar, cambiar el signo por primera vez y continuar parando, y generar y contar por segunda vez.

package doublePalindromic;

import java.util.Scanner;

//输入数据
//	前n个 初始数字大于S
//	
//	在大于S的范围上一个一个讨论(考虑剪枝)
//		每一个数字二到十均转化一次进制
//		判断是不是回文
//		直到满足数字个数要求。

public class Main {
    
    
	static int n;
	static int S;

	public static void main(String[] args) {
    
    
		Scanner console= new Scanner(System.in);
		n= console.nextInt();
		S= console.nextInt();
		int countNum= 0;

		for(int i=S+1; ; i++) {
    
    
			if(countNum==n) return;
			//对于每一个数字 讨论各个进制下的回文情况
			boolean doubleSign1= false;

			for(int r=2; r<=10; r++) {
    
    
				String iUnderR= Integer.toString(i, r);
				StringBuffer reUnderR= new StringBuffer(iUnderR);
				if(iUnderR.equals(reUnderR.reverse().toString())) {
    
    
					if(!doubleSign1) {
    
    
						doubleSign1= true;
						continue;
					}
					else {
    
    
						System.out.println(i);
						countNum++;
						break;
					}
				}
			}
		
	}
	}
}


Supongo que te gusta

Origin blog.csdn.net/roswellnotfound/article/details/108961228
Recomendado
Clasificación