URAL 1095. Nikifor 3

URAL 1095. Nikifor 3
因为给出的数字中一定包含1,2,3,4,而且1234是7的同余系。在所有的数字中挑出一组1234,以及所有的0,判断剩下的数字除7的余数,在数的末尾添加相应的由1234组成的四位数,再添上0,就AC了。
 1  #include  < iostream >
 2  using   namespace  std;
 3  const   int  mo[ 7 ] = { 4123 , 1324 , 1234 , 2341 , 1243 , 3421 , 3142 };
 4  int  t;
 5  int  list[ 30 ];
 6  int  n;
 7  char  ch;
 8  bool  v[ 30 ];
 9  int  a[ 30 ],an;
10  bool  fi;
11 
12  bool  number( char  ch){
13       if  (ch >= ' 0 ' && ch <= ' 9 ' return   true ;
14       else   return   false ;
15      }
16 
17  int  yu( int  x){
18       if  (x > 1 return  (yu(x - 1 ) * 10 + a[x]) % 7 ;
19       if  (x == 1 return  a[x] % 7 ;
20      }
21 
22  int  calc(){
23       int  re = 0 ;
24       if  (an > 1 ) re = (yu(an - 1 ) * 10 + a[an]) % 7 ;
25       if  (an == 1 ) re = a[ 1 ] % 7 ;
26       return  re;
27      }
28 
29  int  main(){
30      scanf( " %d\n " , & t);
31       for  (;t > 0 ; -- t){
32          ch = getchar();
33           for  ( int  i = 1 ;i <= 25 ; ++ i) list[i] = 0 ;
34          n = 0 ;
35           while  (number(ch)){
36              list[ ++ n] = ch - ' 0 ' ;
37              ch = getchar();
38              }
39           for  ( int  i = 1 ;i <= n; ++ i) v[i] = false ;
40          fi = false ;
41           for  ( int  i = 1 ;i <= 4 ; ++ i){
42               for  ( int  j = 1 ;j <= n; ++ j)  if  (list[j] == i){
43                  v[j] = true ;
44                   break ;
45                  }
46              }
47           int  num0 = 0 ;
48           for  ( int  i = 1 ;i <= n; ++ i)  if  (list[i] == 0 ){
49              v[i] = true ;
50               ++ num0;
51              }
52          an = 0 ;
53           for  ( int  i = 1 ;i <= n; ++ i)  if  ( ! v[i]) a[ ++ an] = list[i];
54           int  f = calc();
55           for  ( int  i = 1 ;i <= an; ++ i) printf( " %d " ,a[i]);
56          f = f * 10000 % 7 ;
57          f = ( 7 - f) % 7 ;
58          printf( " %d " ,mo[f]);
59           for  ( int  i = 1 ;i <= num0; ++ i) putchar( ' 0 ' );
60          cout << endl;
61          }
62      }
63 

你可能感兴趣的:(URAL 1095. Nikifor 3)