新人求助,好心人快来呀!!!!
#include<iostream>#include<iomanip>
using namespace std;
int longInt;
int main()
{
int size = 1;//位数
int c;//进位
int n,m;//M的N次方
int i;
cin >> m >>n;
longInt = 1;
for(i = 0;i < n;i++)
{
c = 0;
for(int j = 0;j < size ;j++)
{
longInt = longInt * m + c;
c = longInt / 1000;
if(longInt >= 1000)
{
longInt = longInt % 1000;
if(j == size - 1)
{
size++;
}
}
}
}
for(i = size - 1;i > -1;i--)
{
if(i != size - 1)
{
cout << setw(3) << setfill('0');
}
cout <<longInt;
}
cout << endl;
return 0;
}
有哪位好心人详细的给我解释下这段求m的n次幂的代码么,计算机专业大一新生求助!!!!
本帖最后由 oggplay 于 2014-5-17 00:08 编辑
恩,清醒了一下明白了,它把3位数放到一个数组里边(即小于1000的数),比如16的3次方=4096,他把096放到最低地址的数组里,然后把4放到高地址的数组里,即longint=096,longint=4,如果是40096呢?longint=096,longint=40,如果是123456789呢?longint=789,longint=456,longint=123。打印当然是数组高位往低打了。这就是为什么中间的数组他要setw(3)的原因。 求m的n次方不是有个c语言函数么?。。貌似是pow(m, n); 向往青莲 发表于 2014-5-16 17:29 static/image/common/back.gif
求m的n次方不是有个c语言函数么?。。貌似是pow(m, n);
会有溢出呀,所以找了一个程序。 看看数学书, M的N次方的公式是怎么样的, 你可能就看懂上面的程序了。 勿语静候 发表于 2014-5-16 18:27 static/image/common/back.gif
会有溢出呀,所以找了一个程序。
那就用中国剩余定理。。。。效率高。。。。求平方用这个。。。算法。。。。 oggplay 发表于 2014-5-16 22:48 static/image/common/back.gif
恩,清醒了一下明白了,它把3位数放到一个数组里边(即小于1000的数),比如16的3次方=4096,他把096放到最 ...
可是为什么一个数组要存3位数呀?望解释,谢谢 勿语静候 发表于 2014-5-18 20:12 static/image/common/back.gif
可是为什么一个数组要存3位数呀?望解释,谢谢
想明白了,谢谢啦!!!!
页:
[1]