回复 20楼 水色苔
连试都不试就说不行,真搞笑
2016-11-18 22:04
2016-11-18 22:10
2016-11-18 23:18
2016-11-18 23:39
2016-11-18 23:53
已经9102年了还是有小白想搭车同问,自己试明明和答案一样,请大神们帮我看看问题在哪里。。一个用例都过不了QAQ
程序代码:#include<stdio.h>
#include<string.h>
char mode(char b[4][20],int k);
int main()
{
char a[4][20]={0};
int zushu,i,p,k,len[5]={0};
scanf("%d",&zushu);
for(i=0;i<zushu;i++)
{
scanf("%s",&a[i]);
len[i]=strlen(a[i]);
}
for(i=0,k=0;i<zushu;i++,k++)
{
if(len[i]==15)
{
for(p=14;p>=6;p--)//换位置
{
a[i][p+2]=a[i][p];
}
if(a[i][14]=='9'&&a[i][15]=='9'&&( a[i][16]=='6' || a[i][16]=='7' || a[i][16]=='8' || a[i][16]=='9' ))
{
a[i][6]='1';
a[i][7]='8';
}
else
{
a[i][6]='1';
a[i][7]='9';
}
a[i][17]=mode(a,k);
printf("%s\n",a[i]);
}
else
{
if(len[i]==18&&a[i][17]==mode(a,k))printf("Valid\n");
else printf("Invalid\n");
}
}
return 0;
}
//加权,取模
char mode(char b[4][20],int k)
{
int t,q;
t=0+20*k;
q= (b[0][t++]-48)*7 + (b[0][t++]-48)*9 + (b[0][t++]-48)*10 + (b[0][t++]-48)*5 + (b[0][t++]-48)*8 + (b[0][t++]-48)*4 + (b[0][t++]-48)*2 + (b[0][t++]-48)*1 + (b[0][t++]-48)*6 + (b[0][t++]-48)*3 + (b[0][t++]-48)*7 + (b[0][t++]-48)*9 + (b[0][t++]-48)*10 + (b[0][t++]-48)*5 + (b[0][t++]-48)*8 + (b[0][t++]-48)*4 + (b[0][t++]-48)*2;
switch(q%11)
{
case 0:t=49;break;
case 1:t=48;break;
case 2:t=88;break;
case 3:t=57;break;
case 4:t=56;break;
case 5:t=55;break;
case 6:t=54;break;
case 7:t=53;break;
case 8:t=52;break;
case 9:t=51;break;
case 10:t=50;break;
}
return t;
}
2019-10-27 20:45
2019-10-27 22:41
2019-10-27 23:17