n^n怎么算
答案:3 悬赏:10
解决时间 2021-01-23 00:00
- 提问者网友:蓝琪梦莎
- 2021-01-22 20:01
n^n怎么算
最佳答案
- 二级知识专家网友:人间朝暮
- 2021-01-22 21:20
用数组存储结果。
最简单的方法就是首先让结果数组置为1.然后不断与9999相乘,乘了9999次后数组中存放的就是9999^9999。至于一个数组元素可以存放1位,也可以存放多位,只要注意不溢出即可。
要想速度快点可以找只需要log2(n)次循环就完成计算的乘幂算法(网上多的是);当然要想速度更快,就需要改进乘法运算,使用二分法或者fft之类的乘法运算方法了。
---------------------------
楼上的程序有两个明显问题:
1)m很快就溢出
2)num计算有何用处?楼主根本就没要求
最简单的方法就是首先让结果数组置为1.然后不断与9999相乘,乘了9999次后数组中存放的就是9999^9999。至于一个数组元素可以存放1位,也可以存放多位,只要注意不溢出即可。
要想速度快点可以找只需要log2(n)次循环就完成计算的乘幂算法(网上多的是);当然要想速度更快,就需要改进乘法运算,使用二分法或者fft之类的乘法运算方法了。
---------------------------
楼上的程序有两个明显问题:
1)m很快就溢出
2)num计算有何用处?楼主根本就没要求
全部回答
- 1楼网友:猎心人
- 2021-01-22 22:37
是编程吗?要用这么大的数,用科学计数法就可以存储了
- 2楼网友:第幾種人
- 2021-01-22 22:17
double num=0;//也可以用long型
int n,m;
cin>>n;
for(int i=1;i<=n;i++)
{
m=1;
for(int j=1;j<=i;j++)
m*=i;//次方由循环实现
cout<<" "<<m<<endl;//打出各次方的值,帮助检查结果。
num+=m;
}
我用的C++,也许语法有错误,但是算法应该就是这样
仅供参考
int n,m;
cin>>n;
for(int i=1;i<=n;i++)
{
m=1;
for(int j=1;j<=i;j++)
m*=i;//次方由循环实现
cout<<" "<<m<<endl;//打出各次方的值,帮助检查结果。
num+=m;
}
我用的C++,也许语法有错误,但是算法应该就是这样
仅供参考
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯