csp的ISBN號碼100分運行0ms

這是個水題,但是裏面有個小小的坑,導致許多同學拿不到滿分
在這裏插入圖片描述
原因:
就是餘數爲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,簡單!
在這裏插入圖片描述

發佈了84 篇原創文章 · 獲贊 108 · 訪問量 7924
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章