[Huffuman树]
#include<stdio.h>
int main()
{
int i,j,n;
scanf("%d",&n);
int a[n];
int p;
int m;
int sum=0;
int flag=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(m=0;m<n-1;m++)
{
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
if(a[i]>a[j])
{
p=a[j];
a[j]=a[i];
a[i]=p;
}
}
}
sum=sum+a[flag]+a[flag+1];
a[flag+1]=a[flag]+a[flag+1];
flag++;
}
printf("%d\n",sum);
return 0;
}
阶乘计算
#include<stdio.h>
#include<string.h>>
#define MAX 10000
int main()
{
int n,i,j,m;
int a[MAX];
int r=0;
scanf("%d",&n);
memset(a,0,sizeof(a));
a[0]=1;
for(i=2;i<=n;i++)
{
for(j=0;j<MAX;j++)
{
m=a[j]*i+r;
r=m/10;
a[j]=m%10;
}
}
for(i=MAX-1;i>=0;i--)
{
if(a[i])
break;
}
for(j=i;j>=0;j--)
printf("%d",a[j]);
return 0;
}