這是個水題,但是裏面有個小小的坑,導致許多同學拿不到滿分
原因:
就是餘數爲10的時候,因爲最後的符號-之後只能是一位,所以題目寫了在匹配大寫X字母,這個需要判斷
既然抓住重點了我們直接寫代碼
#include<iostream>
using namespace std;
int main(){
string s;//存儲ISBN號碼
cin>>s;
int sum=0,temp;//存儲乘積的總數 ,temp存取識別碼
for(int i=0,flag=0,j=1;i<s.length();++i){//遍歷
if(flag==3){
temp=sum%11;//算出識別碼
if(temp==10){
if(s[i]=='X'){
cout<<"Right";//若是符合X輸出Right
}
else{
s[i]='X';
cout<<s;//餘數爲10置換識別碼爲X
}
}
else if(temp==(s[i]-'0')){
cout<<"Right";//匹配輸出right
}
else{
s[i]=(temp+'0');//否則轉換類型後在替換
cout<<s;
}
}
if(s[i]=='-'){
++flag;//遇到-標記
}
else{
sum+=(s[i]-'0')*j;//int類型轉換*權值j
++j;
}
}
return 0;
}
運行!
ok!沒問題提交100分0ms,簡單!