📄 2290457_wa.c
字号:
#include <stdio.h>
#include <stdlib.h>
#define Init (Tree *)malloc(sizeof(Tree))
typedef struct node
{
int v;
int no;
struct node *l, *r;
}Tree;
Tree *T;
double c(double m,double n)
{
double i,s;
s = 1;
if(n >= m-n)
n = m - n;
for (i = m; i >= m-n+1; i--)
s *= i/(i - (m - n));
return s;
}
long cal(Tree *t)
{
long n1, n2, n3, a, b;
n1 = n2 = 1;
a = b = t->no-1;
if(t->l)
b = t->l->no,n1 = cal(t->l);
if(t->r)
n2 = cal(t->r);
n3 = (long)c(a,b);
return ((n2%9901)*(n3%9901)*(n1%9901))%9901;
}
void solve(int n)
{
int i, v;
Tree *p, *q;
T = Init;
T->l = T->r = NULL;
scanf("%d",&v);
T->v = v;T->no = 1;
for(i = 1; i < n; i++)
{
scanf("%d",&v);
p = T;q = Init;q->v = v;q->l = q->r = NULL;q->no = 1;
while(p)
{
p->no++;
if(v<=p->v)
{
if(p->l)
p = p->l;
else
{
p->l = q;
break;
}
}
else
{
if(p->r)
p = p->r;
else
{
p->r = q;
break;
}
}
}
}
printf("%ld\n",cal(T));
}
int main()
{
int n;
while(scanf("%d",&n)==1,n)
solve(n);
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -