2022.11.07 AM 11:00 by CBJ
來源 : https://drive.google.com/file/d/1CMnis82zw9hGQHW1pRv3LFXACoUGA90Y/view 出題者 : 108資訊學科能力競賽複賽-彰雲嘉 標籤 : 字串處理、迴圈控制、例外處理 難易度 : 2
解題想法 : 例外處理完後,將各位數相加(記得轉成整數型態再相加),並求出使總和能被10整除的校驗碼(題解中的ans)
//C++ language
//solution link(含註解): https://github.com/CBJ0519/CBJsProgramDiary.com/blob/main/%E8%B3%87%E8%A8%8A%E5%AD%B8%E7%A7%91%E8%83%BD%E5%8A%9B%E7%AB%B6%E8%B3%BD/108%E5%BD%B0%E9%9B%B2%E5%98%89/PA-%E9%80%9A%E7%94%A8%E5%95%86%E5%93%81%E7%A2%BC%E6%A0%A1%E9%A9%97%E7%A2%BC%E7%94%A2%E7%94%9F%E5%99%A8.cpp
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
int main(){
int n;
cin>>n;
while(n--){
string s;
cin>>s;
if(s.length()!=11){
cout<<-1<<"\n";
return 0;
}
int total=0;
for(int i=0;i<s.length();i++){
if(!isdigit(s[i])){
cout<<-1<<"\n";
return 0;
}
if(i%2){
total+=s[i]-'0';
}
else{
total+=(s[i]-'0')*3;
}
}
int ans=10-(total%10);
cout<<ans<<"\n";
}
return 0;
}
## Python language
## solution link(含註解): https://github.com/CBJ0519/CBJsProgramDiary.com/blob/main/%E8%B3%87%E8%A8%8A%E5%AD%B8%E7%A7%91%E8%83%BD%E5%8A%9B%E7%AB%B6%E8%B3%BD/108%E5%BD%B0%E9%9B%B2%E5%98%89/PA-%E9%80%9A%E7%94%A8%E5%95%86%E5%93%81%E7%A2%BC%E6%A0%A1%E9%A9%97%E7%A2%BC%E7%94%A2%E7%94%9F%E5%99%A8.py
n=int(input())
for i in range(n):
s=input()
if len(s)!=11:
print(-1)
exit(0)
total=0
for j in range(len(s)):
if not s[j].isdigit():
print(-1)
exit(0)
if j%2: total+=int(s[j])
else: total+=int(s[j])*3
print(10-(total%10))
發佈留言