poj2190
#include <stdio.h> #include <stdlib.h> int main() { char arr[11]; int index,sum=0,i; scanf("%s",arr); for(i=0;i<10;i++) { if(arr[i]=='?') { index=10-i; continue; } if(arr[i]=='X') { sum+=10; continue; } sum+=((10-i)*(arr[i]-'0')); } //将串中除了?之外的和求出来,并且记录下?对应的乘数 if(index == 1)//表明最后一个元素是?,其取值可以是0~10 { int tmp; for(i=0;i<=10;i++) { tmp=sum+index*i; if(tmp%11==0) break; } if(i==10) putchar('X'); else if(i==11) printf("-1\n"); else printf("%d\n",i); } else//表明?号在前面9位,i只能取到0~9 { int tmp; for(i=0;i<=9;i++) { tmp=sum+i*index; if(tmp % 11 == 0) break; } if(i==10) printf("-1\n"); else printf("%d\n",i); } return 0; }