c语言 x的x次方 用2种以上方法

来源:百度知道 编辑:UC知道 时间:2024/06/15 18:22:12
c语言 x的x次方 2种以上的方法(递归和迭代算一种),谁的方法多而且质量好分就是谁的了
如图所示
【prob_man - 助理 三级】 的回答有些不太懂,能具体说明白吗?能让我用tc 或者vc 就能够直接使用,最好把这个程序每个语句简单介绍一下,不胜感激哦

方法1: 递归、循环、楼上的说的很详细了

方法2: 高精度+二分

下附法2的程序,大概在x=5000时可以1s跑出(我的7年老电脑上。。。)

你的机子肯定能跑更大的。。。

结果的位数如果不够在maxn那里改,不过谁也算不出1000w位吧,应该够了。。。

在文件"hello.in"中输入,输出在"hello.out"

#include<stdio.h>

#define maxn 10000000
#define max(a,b) a>b?a:b

int x,a[maxn],b[maxn],o;

int ans[maxn],p;

int s3[maxn];

void Mult(int s1[],int *l1,int s2[],int l2)
{
int i,j;

for(i=1; i<=*l1+l2+2; i++) s3[i]=0;

for(i=1; i<=*l1; i++) for(j=1; j<=l2; j++) s3[i+j-1]+=s1[i]*s2[j];

j=*l1+l2-1;

for(i=1; i<=j; i++) if(s3[i]>9)s3[i+1]+=s3[i]/10,s3[i]%=10,j=max(j,i+1);

for(i=1; i<=j; i++) s1[i]=s3[i];

*l1=j;
}

void Init(void)
{
int i,j=0,k; i=x; p=1; ans[1]=1;