08NOIP普及組 ISBN號碼

2021-10-02 18:57:50 字數 1188 閱讀 3020

【題目描述】

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

識別碼的計算方法如下:

首位數字乘以1加上次位數字乘以2……以此類推,用所得的結果mod 11,所得的餘數即為識別碼,如果餘數為10,則識別碼為大寫字母x。例如isbn碼0-670-82162-4中的識別碼4是這樣得到的:對0670082162這9個數字,從左至右,分別乘以1,2,…9,再求和,即0×1+6×2+……+2×9=158,然後取158 mod 11的結果4作為識別碼/

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

【輸入】

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

【輸出】

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

【輸入樣例】

0-670-82162-4

【輸出樣例】

right

【提示】

【輸入輸出洋例2】

輸入:0-670-82162-0

輸出:0-670-82162-4

注意識別碼為10時,特殊情況處理!本題純自己思路。下面上簡潔的ac碼

#include

using

namespace std;

string s, tmp;

intmain()

} ans = ans %11;

if((ans !=

10&& ans == s[len-1]

-'0')||

(ans ==

10&& s[len-1]

=='x'))

cout <

<

"right"

;else

return0;

}

NOIP2008 普及組 ISBN 號碼

題目鏈結 題目描述 每一本正式出版的圖書都有乙個isbn號碼與之對應,isbn碼包括9位數字 1位識別碼和3位分隔符,其規定格式如x xx x,其中符號 就是分隔符 鍵盤上的減號 最後一位是識別碼,例如0 670 82162 4就是乙個標準的isbn碼。isbn碼的首位數字表示書籍的出版語言,例如0...

noip2008 ISBN號碼 (模擬)

a1163.isbn號碼 時間限制 1.0s 記憶體限制 256.0mb 總提交次數 691ac次數 268 平均分 62.95 將本題分享到 檢視未格式化的試題 提交試題討論 試題 noip2008 普及組 問題描述 每一本正式出版的圖書都有乙個isbn號碼與之對應,isbn碼包括9位數字 1位識...

NOIP普及組總結

一些感想 考試,好也罷壞也罷,已經過去,只能反思,不能再來 題目 問題 a 3502 noip2017普及組 成績 題目描述 牛牛最近學習了c 入門課程,這門課程的總成績計算方法是 總成績 作業成績 20 小測成績 30 期末考試成績 50 牛牛想知道,這門課程自己最終能得到多少分。輸入只有1 行,...