?? 1423.cpp
字號(hào):
#include <stdio.h>
#include <math.h>
void exchange(int *p1,int *p2)
{
int temp=*p1;
*p1=*p2;
*p2=temp;
}
int partition(int *pa,int *pb,int p,int r)
{
int x=*(pa+r);
int i=p-1,j;
for(j=p;j<r;j++)
{
if(*(pa+j)<x)
{
i++;
exchange((pa+i),(pa+j));
exchange((pb+i),(pb+j));
}
}
exchange((pa+r),(pa+i+1));
exchange((pb+r),(pb+i+1));
return i+1;
}
void quick_sort(int *pa,int *pb,int p,int r)
{
if(p<r)
{
int q=partition(pa,pb,p,r);
quick_sort(pa,pb,p,q-1);
quick_sort(pa,pb,q+1,r);
}
}
int main()
{
int i,j,n,start,end;
double temp;
scanf("%d",&n);
int *array=new int[n+1];
int *sort=new int[n+1];
int *index=new int[n+1];
for(i=1;i<=n;i++)
{
*(sort+i)=i;
scanf("%d",(array+i));
}
quick_sort(array,sort,1,n);
for(i=1;i<=n;i++)
*(index+*(sort+i))=i;
double *log=new double[n+1];
*array=0;
*log=0;
for(i=0;i<n;i++)
{
start=*(array+i);
end=*(array+i+1);
temp=*(log+i);
for(j=start+1;j<=end;j++)
{
temp+=log10((double)j);
}
*(log+i+1)=temp;
}
int temp1=0;
for(i=1;i<=n;i++)
{
//int temp=(*(log+(*(array+i)))+1);
temp1=*(log+*(index+i))+1;
printf("%d\n",temp1);
}
return 0;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -