hdu 2714

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2714

题意:给一串ISBN号,根据算法求出缺的(?表示)那一位。算法是各位上的数字按权相加,和必须为11的倍数。

没啥好说的,直接穷举。注意不存在输出-1。

代码:

 1 # include <stdio.h>
 2 
 3 
 4 int main ()
 5 {
 6     char str[20] ;
 7     int sum, i, pos ;
 8     while (gets(str))
 9     {
10         sum = 0 ;
11         for (i = 0 ; str[i] ; i++)
12         {
13             if (str[i] == '?') pos = i ;
14             else if (str[i] == 'X') sum += 10 ;
15             else sum += (10-i) * (str[i]-'0') ;
16         }
17         if (pos == 9)
18         {
19             if ((sum+10)%11==0) puts ("X") ;
20             else{
21                 for (i = 0 ; i <= 9 ; i++){
22                     if ((sum + i)%11==0){ printf ("%d\n", i) ;
23                     break ;}
24                 }
25             }
26         }
27         else
28         {
29             for (i =0 ; i <= 9 ; i++)
30             {
31                 if ((sum + (10-pos)*i)%11 == 0)
32                 {
33                     printf("%d\n", i) ;
34                     break ;
35                 }
36             }
37             if (i >=10) puts ("-1") ;
38         }
39     }
40     return 0 ;
41 }
posted @ 2012-06-10 10:52  Seraph2012  阅读(230)  评论(0编辑  收藏  举报