每一本正式出版的圖書都有乙個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是這樣得到的:對067082162這9個數字,從左至右,分別乘以1,2,...,9,再求和,即0×1+6×2+……+2×9=158,然後取158 mod 11的結果4作為識別碼。
你的任務是編寫程式判斷輸入的isbn號碼中識別碼是否正確,如果正確,則僅輸出「right」;如果錯誤,則輸出你認為是正確的isbn號碼。
input
多組輸入輸出,對於每組資料:
輸入只有一行,是乙個字串行,表示一本書的isbn號碼(保證輸入符合isbn號碼的格式要求)。
output
對於每組資料:
輸出共一行,假如輸入的isbn號碼的識別碼正確,那麼輸出「right」,否則,按照規定的格式,輸出正確的isbn號碼(包括分隔符「-」)。0-870-82162-4 outout right
解題思路----------最初想法兩個for迴圈輸入前9個數,第十個單獨輸出,再加上利用公式前九個之和,再對11取餘;然後與最後乙個比較,餘數與最後乙個數比,若x單獨拿出來比較,最後在第十個為數,字元卡住,,後來改變思路,換了乙個迴圈做,比較則是跟10比較,#include
int main()
else
scanf("%1d",&a[b]);
}scanf("%*c%c",&ch);
m=0;
for(b=0;b<9;b++)
m=m%11;
if(m<10)
else
}else
else
}}return 0;}學習內容1-迴圈方式(*號用在%和格式符之間,輸入賦值抑制符,有這個*號存在時,輸入的不會賦給任何變數。不會傳遞給任何變數)2,當不確定是字元,還是數時的程式設計方法。3,思考方式(比如跟誰判斷);
Single Number解題思路
整數型陣列中,每個元素均出現兩次,除了乙個元素例外,如何找出這個元素?class solution for map iterator it m.begin it m.end it return 1 時間複雜度為o n n 空間複雜度為0 不需要額外空間 class solution return a...
Leetcode解題思路
所有簡單題的解題思路。question count the number of prime numbers less than a non negative number,n example input 10output 4explanation there are 4 prime numbers ...
leetcode BFS解題思路
word ladder 思路一 單向bfs,使用visited陣列記錄哪些已經訪問過了,訪問過的就不允許再次入隊,同時這裡想到的是使用26個英文本母,列舉可能的取值,類似brute force 思路二 雙向bfs,使用兩個set,這裡沒有使用queue,是因為需要在queue裡查詢,不方便.另外,需...