iven_cheng @ 2023-10-12 22:38:18
#include <cstdio>
#include <ctype.h>
int main() {
char str[50];
int num[11], i, j=0,sum=0,mmod= 0;
scanf("%s",str);
for (i = 0; str[i] != '\0'; i++)
{
if (isdigit(str[i]))
{
num[j++] = str[i]-'0';
}
}
//printf("%d\n",j);
if(j!=10)
{
num[j]=10;
}
int k=1;
for(i=0;i<j;i++)
{
sum+=num[i]*k;
k++;
}
mmod=sum%11;
char mmmod='X';
//printf("%d\n",num[j-1]);
//printf("%d\n",mmod);
if(mmod!=10)
{
if(mmod==num[j])
printf("Right");
else
{
printf("%d-%d%d%d-%d%d%d%d%d-%d",num[0],num[1],num[2],num[3],num[4] ,num[5] ,num[6] ,num[7] ,num[8],mmod);
}
}else
printf("%d-%d%d%d-%d%d%d%d%d-%c",num[0],num[1],num[2],num[3],num[4] ,num[5] ,num[6] ,num[7] ,num[8],mmmod);
return 0;
}
0-670-82162-X 0-670-82162-4
0-670-82162-4 Right
0-670-82162-0 0-670-82162-4
by rensiwei @ 2023-10-15 09:52:54
用那么麻烦吗? 25行结束
#include<iostream>
using namespace std;
char a[100];
int b[100],cnt=1,sum=0;
int main() {
cin>>a;
for(int i=0; i<11; i++)
if(a[i]>='0'&&a[i]<='9') {
sum+=(a[i]-48)*cnt;
cnt++;
}
sum%=11;
if((sum!=10&&sum==a[12]-48)||(sum==10&&a[12]=='X'))
cout<<"Right";
else {
for(int i=0; i<=11; i++) {
cout<<a[i];
}
if(sum!=10)
cout<<sum;
else
cout<<"X";
}
return 0;
}
by iven_cheng @ 2023-10-16 08:49:21
@rensiwei 大佬,怎么才能学会这种流畅的思路啊QAQ
by rensiwei @ 2023-10-16 19:19:18
@iven_cheng 我觉得很简单呀,我其实一开始也是用的你这种思路。不过我给你看了看这个代码,你这个好像在判断if(mmod==10)是没考虑到if(mmod==num[j]) 你的样例也没测到。在此请求加入我的团队,谢谢