CCF-CSP 201312-2 Número ISBN

Descripción del problema
  Cada libro publicado oficialmente tiene un número ISBN correspondiente. El código ISBN consta de 9 dígitos, 1 código de identificación y 3 separadores. Su formato prescrito es "x-xxx-xxxxx-x", donde El símbolo "-" es el separador (signo menos en el teclado), y el último dígito es el código de identificación. Por ejemplo, 0-670-82162-4 es un código ISBN estándar. El primer dígito del código ISBN indica el idioma en el que se publica el libro, por ejemplo, 0 representa inglés; los tres dígitos después del primer separador "-" representan la editorial, por ejemplo, 670 representa la editorial Viking; los cinco dígitos después del segundo separador Representa el número del libro en la editorial; el último dígito es el código de identificación.
  El método de cálculo del código de identificación es el siguiente: el
  primer dígito se multiplica por 1 más el segundo dígito se multiplica por 2 ... y así sucesivamente, utilizando el resultado 11 obtenido, el resto resultante es el código de identificación, si el resto es 10, el código de identificación es Letra mayúscula X. Por ejemplo, el código de identificación 4 en el número ISBN 0-670-82162-4 se obtiene de la siguiente manera: para los 9 dígitos 067082162, de izquierda a derecha, se multiplican por 1, 2, ..., 9 y luego se suman, es decir, 0 × 1 + 6 × 2 + …… + 2 × 9 = 158, y luego tome el resultado 4 de 158 mod 11 como código de identificación.
  Escriba un programa para juzgar si el código de identificación en el número ISBN de entrada es correcto. Si es correcto, solo se emite "Correcto"; si es incorrecto, la salida es el número ISBN correcto.
Formato de
  entrada La entrada es solo una línea, que es una secuencia de caracteres que representa el número ISBN de un libro (para garantizar que la entrada cumpla con los requisitos de formato del número ISBN).
Formato de
  salida Emite una línea, si el código de identificación del número ISBN de entrada es correcto, luego emite "Derecha", de lo contrario, de acuerdo con el formato especificado, emite el número ISBN correcto (incluido el separador "-").
Entrada de muestra
0-670-82162-4
Salida de muestra Entrada de muestra
derecha

0-670-82162-0
Salida de muestra
0-670-82162-4

Resumen de la experiencia:
es más conveniente utilizar el procesamiento de cadenas, si es más problemático tratar con números enteros.
Recuerde: la cadena puede reemplazar un cierto carácter por separado, por ejemplo: s [i] = '1'; (i es cualquier valor en el rango de longitud de la cadena )

Código C ++:

#include<bits/stdc++.h>
using namespace std;
int main() {
	int sum = 0,cnt = 0;
	string s;
	cin>>s;
	for(decltype(s.size()) i=0; i<s.size()-2; i++) {
		if(s[i]!='-') {
			cnt++;
			sum += (s[i]-'0')*cnt;
		}
	}
	sum %= 11;
	char check;
	if(10 == sum) check = 'X';
	else check = sum+'0';
	if(check == s[s.size()-1]) cout<<"Right";
	else {
		//此处可替换成s[s.size()-1] = check;
		for(decltype(s.size()) i=0; i<s.size()-1; i++) {
			cout<<s[i];
		}
		cout<<check;
	}
	return 0;
}
Publicados 111 artículos originales · ganado elogios 2 · Vistas 3533

Supongo que te gusta

Origin blog.csdn.net/m0_38088647/article/details/100523201
Recomendado
Clasificación