3 条题解
-
0
ISBN号码
题目大意:
给你一个字符串,把除最后一位识别码的其他数字分别乘以1,2...9的和加起来对11取余,如果余数为10,那么识别码为X,如果等于最后一位,就输出Right, 如果不等于,就输出正确的字符串
模拟即可(细节看代码注释)
用枚举除了最后一位数字之外的数字和,然后模掉 11,最后特判一下最后一位是 10 的情况,就好了
#include<bits/stdc++.h> using namespace std; int main() { int a,b,c,d,e,f,g,h,i,s1,s2; char j; scanf("%1d-%1d%1d%1d-%1d%1d%1d%1d%1d-%c",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j); s1=(a*1+b*2+c*3+d*4+e*5+f*6+g*7+h*8+i*9)%11; if(j=='X') s2=10; else s2=j-'0'; if(s1==s2) cout<<"Right"; else if(s1==10) cout<<a<<"-"<<b<<c<<d<<"-"<<e<<f<<g<<h<<i<<"-X"; else cout<<a<<"-"<<b<<c<<d<<"-"<<e<<f<<g<<h<<i<<"-"<<s1; return 0; }
最后求个赞qwq
-
-2
#include<bits/stdc++.h> using namespace std; string a; int b[9]={0, 2, 3, 4, 6, 7, 8, 9, 10},s = 0; char x; int main(){ cin >> a; for(int i = 0;i < 9;i++) s += (a[b[i]] - '0') * (i + 1); s %= 11; if(s == 10) x='X'; else x = s+'0'; if(x == a[12]) cout << "Right"; else { for(int i = 0;i < 12;i++) cout << a[i]; cout << x; } return 0; }
-
-2
AC+CE=
#include<bits/stdc++.h> #define int unsigned long long #define INF 0x3f3f3f using namespace std; char c[11]; int a[11]; char c_; int ans; void print() { cout<<a[1]<<"-"; for(int i=2;i<=4;i++)cout<<a[i]; cout<<"-"; for(int i=5;i<=9;i++)cout<<a[i]; cout<<"-"; if(ans!=10)cout<<ans; else cout<<"X"; } signed main() { scanf("%c-%c%c%c-%c%c%c%c%c-%c",c+1,c+2,c+3,c+4,c+5,c+6,c+7,c+8,c+9,&c_); for(int i=1;i<=9;i++) a[i]=c[i]-48; for(int i=1;i<=9;i++) ans=(ans+a[i]*i)%11; if(c_=='X'){ if(ans==10)cout<<"Right"; else print(); } else{ if(ans==c_-'0')cout<<"Right"; else print(); } return 0; }
- 1
信息
- ID
- 5113
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 380
- 已通过
- 147
- 上传者