language: C (gcc-4.3.4)
date: 102 days 20 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include<stdio.h>
int main()
{
    char a[501];
    int b[500];
    int z[11]={1,1,2,6,24,120,720,5040,40320,362800,3628000};
    int prime[95]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,
        73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,
        179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,
        283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,
        419,421,431,433,439,443,449,457,461,463,467,479,487,491,499};
    int t,no,i,c,j,priou,k;
    long int count1,count2,count3;
    scanf("%d",&t);
    getchar();
     count3=(pow(10,9)+7);
    while(t!=0)
    {
           no=0;
           i=0;
           while((c=getchar())!='\n')
           {
                                     a[i]=c;
                                     
                                     b[i]=1;
                                     i++;
                                     }
                                     no=i;
                                     a[i]='\n';
     
       for(i=0;i<no;i++)
          { 
                    
                        for(j=i+1;(a[i]>48 && j<no);j++)
          {
                            if(a[i]==a[j])
                            {
                             b[i]++;
                               a[j]=4;
                               }
                               }
        }         
    
                               count1=count2=1;      
                               i=0;
    while(1)
    {
            priou=0;
            if(no>=prime[i])
            {
                           k=no;
            if(k!=0)
            {
               j=k/prime[i];
               priou=priou+j;
               k=j;
               }  
              
               count1=pow(prime[i],priou);
               count1=count2*count1; 
            count2=count1%count3;
               
               i++;
               }
                
               else if(no<prime[i])
                            break;
               
               }
       for(j=0;j<no;j++)
       {
                       if(b[j]>1)
                       {
                       count1=count2/z[b[j]];        
                       count2=count1;
                       }
                       }
                       printf("%ld\n",count2);
                       t--; 
}
system("pause");
return 0;
}