P1055 题解

ikunTLE

2025-01-15 22:00:46

题解

题目传送门

思路

一道模拟题。

首先将字符串 S 除最后一位每一个数字位存到 int 类型的序列 A 中,那么 A 就变成了一个长度为 9 的序列。然后用 i 遍历 A,第 i 位要乘对应的 A_i,所以统计出数字总和为 \sum_{i=1}^9A_i\times i

然后需要将其对 11 取模,得到一个整数 C。这时将输入的字符串中最后一位与 C 比较,若相同输出 Right,否则将去掉最后一位的字符串与得到转为 charC 拼接输出。

AC CODE

#include<bits/stdc++.h>
using namespace std;
const int N=15;
char s[N];
int main(){
    scanf("%s",s);
    int a[]={0,s[0]-'0',s[2]-'0',s[3]-'0',s[4]-'0',s[6]-'0',s[7]-'0',s[8]-'0',s[9]-'0',s[10]-'0'};
    int sum=0;
    for(int i=1;i<=9;++i)
        sum=(sum+(a[i])*i)%11;
    char ch;
    if(sum==10)
        ch='X';
    else ch=sum+'0';
    if(ch==s[12])
        printf("Right\n");
    else printf("%d-%d%d%d-%d%d%d%d%d-%c\n",a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],ch);
    return 0;
}