标签:stdout mit str using memory ++ pre long logs
选拔(select)
Time Limit:2000ms Memory Limit:128MB
题目描述
LYK对n个女生有好感。第i个女生的身高为ai。
LYK要在这些女生中选拔出一个女生来作为他的女朋友。选拔当然要排队咯。于是LYK想让这n个女生排成一行。
但LYK觉得对于两个身高相同的女生,谁排在前谁排在后其实让整个队列看上去并没有什么差别。
LYK想知道有多少个有差别的队列。
输入格式(select.in)
第一行一个数n表示女生个数。
第二行有n个数ai表示第i个女生的身高。
输出格式(select.out)
一个数表示答案。
输入样例
3
1 2 2
输出样例
3
数据范围
对于40%的数据n<=5,。
对于60%的数据n<=20。
对于80%的数据n<=1000。
对于100%的数据n<=10000,1<=ai<=n。
1 #define LL long long 2 3 #include<iostream> 4 #include<algorithm> 5 #include<cstring> 6 #include<iomanip> 7 #include<cstdio> 8 using namespace std; 9 10 const int MAXN=10000; 11 const int DLEN=9; 12 const int WIDE=1000000000; 13 14 class BigNum 15 { 16 public: 17 BigNum(){memset(NUM,0,sizeof(NUM));LEN=1;} 18 BigNum(const BigNum &A){memcpy(NUM,A.NUM,sizeof(NUM));LEN=A.LEN;} 19 BigNum(int n){memset(NUM,0,sizeof(NUM));NUM[0]=n;LEN=1;while(NUM[LEN-1]>=WIDE){NUM[LEN]+=NUM[LEN-1]/WIDE;NUM[LEN-1]%=WIDE;LEN++;}} 20 LL NUM[MAXN],LEN; 21 }; 22 23 void Output(const BigNum T) 24 { 25 cout<<T.NUM[T.LEN-1]; 26 for(int i=T.LEN-2;i>=0;i--) 27 { 28 cout.width(DLEN); 29 cout.fill(‘0‘); 30 cout<<T.NUM[i]; 31 } 32 } 33 34 BigNum Mult(BigNum A,int n) 35 { 36 BigNum C(A); 37 int i,tmp,k=0; 38 for(i=0;i<C.LEN||k;i++) 39 { 40 tmp=C.NUM[i]*n+k; 41 k=tmp/WIDE; 42 C.NUM[i]=tmp%WIDE; 43 } 44 C.LEN=i; 45 return C; 46 } 47 48 BigNum Div(BigNum A,int n) 49 { 50 BigNum C(A); 51 int k=0; 52 for(int i=C.LEN-1;i>=0;i--) 53 { 54 k=k*WIDE+C.NUM[i]; 55 C.NUM[i]=k/n; 56 k%=n; 57 } 58 while(C.NUM[C.LEN-1]==0) C.LEN--; 59 return C; 60 } 61 62 int n; 63 int a[10001]; 64 BigNum A(1); 65 66 int main() 67 { 68 freopen("select.in","r",stdin); 69 freopen("select.out","w",stdout); 70 scanf("%d",&n); 71 for(int i=1;i<=n;i++) 72 { 73 int x; 74 scanf("%d",&x); 75 a[x]++; 76 } 77 for(int i=2;i<=n;i++) 78 A=Mult(A,i); 79 for(int i=1;i<=10000;i++) 80 if(a[i]>0) 81 { 82 for(int j=2;j<=a[i];j++) 83 A=Div(A,j); 84 } 85 Output(A); 86 return 0; 87 }
模板题
一开始高精度开小了,爆80。。。
标签:stdout mit str using memory ++ pre long logs
原文地址:http://www.cnblogs.com/InWILL/p/6336446.html