洛谷P1055 字串的處理 ISBN

2021-10-04 07:19:34 字數 1143 閱讀 7601

題目描述

每一本正式出版的圖書都有乙個isbn號碼與之對應,isbn碼包括99位數字、11位識別碼和33位分隔符,其規定格式如x-***-***xx-x,其中符號-就是分隔符(鍵盤上的減號),最後一位是識別碼,例如0-670-82162-4就是乙個標準的isbn碼。isbn碼的首位數字表示書籍的出版語言,例如00代表英語;第乙個分隔符-之後的三位數字代表出版社,例如670670代表維京出版社;第二個分隔符後的五位數字代表該書在該出版社的編號;最後一位為識別碼。

識別碼的計算方法如下:

首位數字乘以11加上次位數字乘以22……以此類推,用所得的結果\bmod 11mod11,所得的餘數即為識別碼,如果餘數為1010,則識別碼為大寫字母xx。例如isbn號碼0-670-82162-4中的識別碼44是這樣得到的:對067082162這99個數字,從左至右,分別乘以1,2,…,91,2,…,9再求和,即0×1+6×2+……+2×9=1580×1+6×2+……+2×9=158,然後取158 \bmod 11158mod11的結果44作為識別碼。

你的任務是編寫程式判斷輸入的isbn號碼中識別碼是否正確,如果正確,則僅輸出right;如果錯誤,則輸出你認為是正確的isbn號碼。

輸入格式

乙個字串行,表示一本書的isbn號碼(保證輸入符合isbn號碼的格式要求)。

輸出格式

一行,假如輸入的isbn號碼的識別碼正確,那麼輸出right,否則,按照規定的格式,輸出正確的isbn號碼(包括分隔符-)。

輸入輸出樣例

輸入 #1複製

0-670-82162-4

輸出 #1複製

right

輸入 #2複製

0-670-82162-0

輸出 #2複製

0-670-82162-4

說明/提示

2008普及組第一題

題解如下:

#include

#include

#include

using namespace std;

int main()

}sum = sum % 11;

if (sum == 10)

}else

if (sum == (b[12] - 『0』))

cout << 「right」;

else

}

洛谷P1032 字串處理 BFS

傳送門 分析 這道題wa點很多。並且需要判重。弱雞看了大佬題解才get了string類的replace 函式用法。str.replace position,length,the other string 乙個wa了好幾次才意識到的地方 在主串中找到第乙個與子串匹配的位置後,應該繼續往下查詢其他可匹配...

洛谷 P1279 字串距離

設有字串x,我們稱在x的頭尾及中間插入任意多個空格後構成的新字串為x的擴充套件串,如字串x為 abcbcd 則字串 abcb cd a bcbcd 和 abcb cd 都是x的擴充套件串,這裡 代表空格字元。如果a1是字串a的擴充套件串,b1是字串b的擴充套件串,a1與b1具有相同的長度,那麼我捫定...

洛谷 P1032 字串變換

洛谷 p1032 字串變換 題目描述 已知有兩個字串 a,b 及一組字串變換的規則 至多6個規則 a1 b1 a2 b2 規則的含義為 在 a 中的子串 a1 可以變換為 b1 a2 可以變換為 b2 例如 a abcd b xyz 變換規則為 abc xu ud y y yz 則此時,a 可以經過...