http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2719
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <stdio.h> 2 #include <string.h> 3 const int N=1010; 4 using namespace std; 5 int a[N],b[N],f[N]; 6 int main() 7 { 8 int n1,n2,m,o=0; 9 while(~scanf("%d %d %d",&n1,&n2,&m)) 10 { 11 o++; 12 int flag1 = 0,flag2 = 0; 13 if (n1==0&&n2==0&&m==0) 14 break; 15 memset(a,-1,sizeof(a)); 16 memset(b,-1,sizeof(b)); 17 for (int i = 0; i < m; i++) 18 scanf("%d",&f[i]); 19 int t1,t2,tt; 20 for (int i = 0; i < m; i++) 21 { 22 tt = f[i]; 23 while(1) 24 { 25 t1 = tt%n1; 26 if (a[t1]==-1) 27 { 28 a[t1] = tt; 29 flag1 = 1; 30 break; 31 } 32 else 33 { 34 int temp = a[t1]; 35 a[t1] = tt; 36 t2 = temp%n2; 37 if (b[t2]==-1) 38 { 39 b[t2] = temp; 40 flag2 = 1; 41 break; 42 } 43 else 44 { 45 46 tt = b[t2]; 47 b[t2] = temp; 48 flag2 = 1; 49 50 } 51 } 52 } 53 54 } 55 printf("Case %d: ",o); 56 if (flag1) 57 { 58 printf("Table 1 "); 59 for (int i = 0; i < n1; i++) 60 { 61 if (a[i]!=-1) 62 printf("%d:%d ",i,a[i]); 63 64 } 65 } 66 if (flag2) 67 { 68 printf("Table 2 "); 69 for (int i = 0; i < n2; i++) 70 { 71 if (b[i]!=-1) 72 printf("%d:%d ",i,b[i]); 73 } 74 } 75 76 } 77 return 0; 78 } 79