luogu parte 1.3 número ISBN (basado en cadenas)

P1055 [NOIP2008 Popularization Group] Número ISBN
Título Descripción
Cada libro publicado oficialmente tiene un número ISBN correspondiente. El código ISBN consta de 99 dígitos, 11 dígitos para el código de identificación y 33 dígitos para los separadores. El formato prescrito es x-xxx -xxxxx -x, donde el símbolo es el separador (el 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 de publicación del libro, como 00 para inglés; el primer separador: los tres dígitos después de la editorial, por ejemplo, 670670 para Viking Publishing House; los cinco dígitos después del segundo separador para el editor El número de serie del libro en el editor; 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 11 más el siguiente dígito se multiplica por 22 ... y así sucesivamente, utilizando el resultado \ bmod 11mod11, el resto es el código de identificación, si el resto es 1010, el código de identificación es la letra mayúscula XX . Por ejemplo, el código de identificación 44 en el número ISBN 0-670-82162-4 se obtiene así: Para los 99 números 067082162, de izquierda a derecha, multiplica por 1, 2, ..., 91, 2, .. ., 9 y luego encontrar Suma, es decir, 0 × 1 + 6 × 2 + …… + 2 × 9 = 1580 × 1 + 6 × 2 + …… + 2 × 9 = 158, y luego tomar el resultado 44 de 158 \ bmod 11158mod11 como código de identificación.

Su tarea es escribir un programa para juzgar si el código de identificación en el número de ISBN de entrada es correcto, si es correcto, solo da salida a Correcto; si es incorrecto, envía el número de ISBN que cree que es correcto.

Formato de entrada
Una secuencia de caracteres que representa el número ISBN de un libro (asegúrese de que la entrada cumpla con los requisitos de formato del número ISBN).

Formato de salida
Una línea, si el código de identificación del número ISBN de entrada es correcto, luego salida Derecha; de lo contrario, de acuerdo con el formato especificado, envíe el número ISBN correcto (incluido el separador -).

Entrada y salida de muestra
entrada # 1 copia
0-670-82162-4
salida # 1 copia Entrada
derecha
# 2 copia
0-670-82162-0
salida # 2 copia
0-670-82162-4
Descripción / Recordatorio
2008 grupo popular primera pregunta

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
int main(){
    
    
	string s;
	cin>>s;
	int sum=0,total=0;
	for(int i=0;i<s.size()-2;i++){
    
    
		if(s[i]>='0'&&s[i]<='9'){
    
    
			total++;sum+=(s[i]-'0')*(total);
		}
	}sum%=11;
	if(sum==10&&s[s.size()-1]=='X')cout<<"Right";
	else if(sum==10)cout<<s.substr(0,s.size()-1)<<'X';
	else if((s[s.size()-1]-'0')==sum)cout<<"Right";
	else cout<<s.substr(0,s.size()-1)<<sum;
	return 0;
	
}

Supongo que te gusta

Origin blog.csdn.net/Minelois/article/details/113763688
Recomendado
Clasificación