Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
why RE ????!!!!#include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX_N 10000 #define MAX_M 100 short int n, m; short int fount, rear; short int mod_flag[MAX_N]; char digits[12]; typedef struct { short int mod; short int count; char ans[MAX_M]; }Out_Q; Out_Q q[MAX_N]; insert_sort() { char tmp; int i, j, k; for(i=2;i<=m;++i){ tmp = digits[i]; for(j=1;j<i;++j){ if(digits[j] > tmp) break; } for(k=i;k>j;--k) digits[k] = digits[k-1]; digits[j] = tmp; } } void work(); void BFS(); int main() { freopen("1136-input", "r", stdin); while(scanf("%d", &n) == 1){ int i; scanf("%d", &m); for(i=1;i<=m;++i){ getchar(); digits[i] = getchar(); } if(n){ work(); } else printf("0\n"); } return 0; } void work() { memset(mod_flag, 0, sizeof(mod_flag)); insert_sort(); fount = rear = 0; BFS(); } void BFS() { int i; for(i=1;i<=m;++i){ if(digits[i] == '0') continue; short int mod = (digits[i] - '0') % n; mod_flag[mod] = 1; q[(++rear) % MAX_N].mod = mod; short int k = q[rear % MAX_N].count = 1; q[rear % MAX_N].ans[k] = digits[i]; } while((++fount) % MAX_N <= rear){ if(q[fount].mod == 0){ puts(q[fount].ans+1); return; } for(i=1;i<=m;++i){ Out_Q tmp = q[fount]; tmp.mod = (q[fount].mod * 10 + digits[i] - '0') % n; if(mod_flag[tmp.mod]) continue; mod_flag[tmp.mod] = 1; tmp.ans[++tmp.count] = digits[i]; q[(++rear) % MAX_N] = tmp; } } printf("0\n"); } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator