8 条题解
-
2
只使用 char 类型能让你在这道题中变得幸运
#include <bits/stdc++.h> using namespace std; int main() { char c[10],a; scanf("%c-%c%c%c-%c%c%c%c%c-%c",&c[0],&c[1],&c[2],&c[3],&c[4],&c[5],&c[6],&c[7],&c[8],&c[9]); for(int i=0;i<9;i++) { a+=(c[i]-'0')*(i+1); a%=11; } if(a==10) a='X'; else a+='0'; if(a==c[9]) printf("Right"); else printf("%c-%c%c%c-%c%c%c%c%c-%c",c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8],a); return 0; }
原题解:
发个短点的吧,其实也不是特别短
嫌定义太多变量麻烦可以用字符数组
#include<bits/stdc++.h> using namespace std; //-'0' for char to int int main(){ char a,b,c,d,e,f,g,h,i,j; scanf("%c-%c%c%c-%c%c%c%c%c-%c",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j); char k=(a-'0'+2*(b-'0')+3*(c-'0')+4*(d-'0')+5*(e-'0')+6*(f-'0')+7*(g-'0')+8*(h-'0')+9*(i-'0'))%11+'0'; if(k==':') k='X'; if(k==j) cout<<"Right",exit(0); else printf("%c-%c%c%c-%c%c%c%c%c-%c",a,b,c,d,e,f,g,h,i,k); return 0; }
-
1
简单
#include<bits/stdc++.h> using namespace std; int q,w,e,r,t,y,u,o,p,s,d,f,g,h,j,l,z,x,c,v,n,m,i,k,a[100],b; string ss; int main() { cin>>ss; k=1; for(i=0;i<=11;i++) { if(ss[i]!='-') { a[k]=ss[i]-'0'; k++; } } for(i=1;i<=9;i++) s+=i*a[i]; s%=11; if(s==ss[12]-'0'||s==10&&ss[12]=='X') cout<<"Right"; else { for(i=0;i<=11;i++) { cout<<ss[i]; } if(s!=10) cout<<s; else cout<<"X"; } return 0; }
-
0
ISBN = input() mod = ['0','1','2','3','4','5','6','7','8','9','X'] cb = 0 n = 1 for i in ISBN[:-1]: if i == '-': continue else: cb = int(i)*n + cb n += 1 cb = cb%11 if cb == 10 and ISBN[-1] == 'X': print('Right') elif ISBN[-1] == str(cb): print('Right') else: print(ISBN[:-1]+mod[cb])
-
0
#include <bits/stdc++.h> using namespace std; string a; void print() //输出正确ISBN号 { for(int i=0;i<a.size()-1;i++) cout<<a[i]; } int main() { cin>>a; int sum=0; int pos=0; for(int i=0;i<=10;i++) if(a[i]!='-'){pos++;sum+=(a[i]-'0')*pos;} sum%=11; //判断ISBN识别码是否正确 if(sum==10) if(a[a.size()-1]=='X'){cout<<"Right";return 0;} else {print();cout<<'X';return 0;} else { if(a[a.size()-1]-'0'==sum){cout<<"Right";return 0;} else {print();cout<<sum;return 0;} } return 0; }
-
0
思路是用一个字符数组装着数字,然后遍历求和、判断,最后输出。 废话不多说,上代码:
#include<cstdio> using namespace std; char s[11]={}; int summ=0; int main(){ scanf("%c-%c%c%c-%c%c%c%c%c-%c", s+0,s+1,s+2,s+3,s+4,s+5,s+6,s+7,s+8,s+9); for(int i=0;i<9;i++){ summ+=(s[i]-'0')*(i+1); } if(summ%11==10){ if(s[9]=='X'){ printf("Right"); } else{ s[9]='X'; printf("%c-%c%c%c-%c%c%c%c%c-%c", s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],s[8],s[9]); } } else if(summ%11==s[9]-'0'){ printf("Right"); } else{ s[9]=summ%11+'0'; printf("%c-%c%c%c-%c%c%c%c%c-%c", s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],s[8],s[9]); } return 0; }
-
0
#include<bits/stdc++.h> using namespace std; int main() { char s[15]; cin>>s; int sum=0; int x=1; for(int i=0;i<12;i++) { if(s[i]>='0'&&s[i]<='9') { sum+=(s[i]-'0')*x; x++; } } char c=sum%11+'0'; if(sum%11==10) c='X'; if(s[12]==c) cout<<"Right"; else { s[12]=c; cout<<s; } return 0; }
-
0
简单的大模拟,不必费口舌
感谢@【ICE】 的代码
#include <iostream> #include <cstring>//头文件不解释 using namespace std; int main() { char s[14],c; cin>>s; int h=0,k=0; for(int i=0;i<11;i++) { if(s[i]!='-') { k++; h+=k*(s[i]-'0');//-0是为了将字符串变成普通数字 } } h%=11; if(h==10) c='X'; else c=h+'0'; if(c==s[12]) cout<<"Right"<<endl; else { s[12]=c; cout<<s; } return 0; }
-
-1
`
#include<bits/stdc++.h> using namespace std; int main(){ int s , a [15]; char b [15]; for (int i = 1 ;i <= 13 ;i ++) { cin >> b [i]; a [i] = b [i] - '0'; } if (a [13] + '0' == 'X') { a [13] =10; } s = a[1] * 1 + a[3] * 2 + a[4] * 3 + a [5] * 4 + a [7] * 5 + a [8] * 6 + a [9] * 7 + a [10] * 8 + a [11] * 9; s %= 11; if (s == a [13]) { cout << "Right"; } else { for (int i = 1 ;i <= 12 ;i ++){ cout<<b[i]; } if (s == 10){ cout << "X"; } else { cout << s; } } return 0; }
- 1
信息
- ID
- 56
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 264
- 已通过
- 98
- 上传者