(UVA) 10093 - An Easy Problem! - Solução
import java.io.*;
import java.util.*;
import java.lang.Math;
import java.math.*;
class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
Main processando = new Main();
processando.takeInput();
System.exit(0);
}
void takeInput() throws NumberFormatException, IOException {
String line = "";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while ((line = br.readLine()) != null) {
// Lê tamanho da linha de entrada
Integer tamanho = line.length();
ArrayList<Integer> vetor = new ArrayList<Integer>();
int[][] valoresElevados = new int[70][tamanho];
Integer i;
// converte todos os valores para seus valores inteiros equivalentes
for (i = 0; i < tamanho; i++) {
if (line.charAt(i) >= '0' && line.charAt(i) <= '9') {
vetor.add(line.charAt(i)-'0');
}
else if (line.charAt(i) >= 'A' && line.charAt(i) <= 'Z') {
vetor.add(line.charAt(i)-'A'+10);
}
else if (line.charAt(i) >= 'a' && line.charAt(i) <= 'z') {
vetor.add(line.charAt(i)-'a'+10+26);
}
}
// para tirar os + e -
tamanho = vetor.size();
Integer j;
for (i = 2; i < 63; i++) {
Integer resultado = 1;
for (j = tamanho-1; j >= 0; j--) {
// para obter o real valor do número em determinada base i
resultado = (resultado * i)%(i-1);
valoresElevados[i][j] = vetor.get(j)*resultado;
}
}
boolean pula = false;
boolean possivel = false;
// a partir da base 2 até a base 62
for (i = 2; i < 63; i++) {
Integer soma = 0;
// de acordo com o tamanho das linhas da matriz
for (j = 0; j < tamanho; j++) {
// se o valor é maior ou igual do que a base, não vai fazer cálculo
if (vetor.get(j) >= i) {
pula = true;
break;
}
// calcula a soma com base na derivada
soma += (valoresElevados[i][j]%(i-1));
}
if (pula == true) {
pula = false;
continue;
}
if (soma%(i-1) == 0) {
System.out.println(i);
possivel = true;
break;
}
}
if (possivel == false) {
System.out.println("such number is impossible!");
}
}
return;
}
}
import java.util.*;
import java.lang.Math;
import java.math.*;
class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
Main processando = new Main();
processando.takeInput();
System.exit(0);
}
void takeInput() throws NumberFormatException, IOException {
String line = "";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while ((line = br.readLine()) != null) {
// Lê tamanho da linha de entrada
Integer tamanho = line.length();
ArrayList<Integer> vetor = new ArrayList<Integer>();
int[][] valoresElevados = new int[70][tamanho];
Integer i;
// converte todos os valores para seus valores inteiros equivalentes
for (i = 0; i < tamanho; i++) {
if (line.charAt(i) >= '0' && line.charAt(i) <= '9') {
vetor.add(line.charAt(i)-'0');
}
else if (line.charAt(i) >= 'A' && line.charAt(i) <= 'Z') {
vetor.add(line.charAt(i)-'A'+10);
}
else if (line.charAt(i) >= 'a' && line.charAt(i) <= 'z') {
vetor.add(line.charAt(i)-'a'+10+26);
}
}
// para tirar os + e -
tamanho = vetor.size();
Integer j;
for (i = 2; i < 63; i++) {
Integer resultado = 1;
for (j = tamanho-1; j >= 0; j--) {
// para obter o real valor do número em determinada base i
resultado = (resultado * i)%(i-1);
valoresElevados[i][j] = vetor.get(j)*resultado;
}
}
boolean pula = false;
boolean possivel = false;
// a partir da base 2 até a base 62
for (i = 2; i < 63; i++) {
Integer soma = 0;
// de acordo com o tamanho das linhas da matriz
for (j = 0; j < tamanho; j++) {
// se o valor é maior ou igual do que a base, não vai fazer cálculo
if (vetor.get(j) >= i) {
pula = true;
break;
}
// calcula a soma com base na derivada
soma += (valoresElevados[i][j]%(i-1));
}
if (pula == true) {
pula = false;
continue;
}
if (soma%(i-1) == 0) {
System.out.println(i);
possivel = true;
break;
}
}
if (possivel == false) {
System.out.println("such number is impossible!");
}
}
return;
}
}
Comments
Post a Comment