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;

}

 

你可能感兴趣的:(poj)