#include #include #include #define P 1000003 long fact[P+10],inv[P+10]; typedef struct { long x; int a; int n; } frac; int cmp(const void*p1,const void*p2){ //x/aが小さい方が前(-1を返す) frac*f1=(frac*)p1,*f2=(frac*)p2; long q1=(*f1).x/(*f1).a,q2=(*f2).x/(*f2).a; if(q1==q2){ double r1=(double)((*f1).x%(*f1).a)/(*f1).a,r2=(double)((*f2).x%(*f2).a)/(*f2).a; return r1r2; } return q1=A[t]){ arr[len].x=x[i]+k; arr[len].a=a[i]; arr[len].n=i; temp-=A[t]; len++; k++; } } qsort(arr,len,sizeof(frac),cmp); for(int i=0;iX[i]){puts("0");return 0;} //やる ans=1; for(int i=0;i<26;i++)if(A[i])ans=ans*f(i)%P; printf("%ld\n",ans); }