勿语静候 发表于 2014-5-16 15:13:41

新人求助,好心人快来呀!!!!

#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-16 15:13:42

本帖最后由 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)的原因。

向往青莲 发表于 2014-5-16 17:29:01

求m的n次方不是有个c语言函数么?。。貌似是pow(m, n);

勿语静候 发表于 2014-5-16 18:27:27

向往青莲 发表于 2014-5-16 17:29 static/image/common/back.gif
求m的n次方不是有个c语言函数么?。。貌似是pow(m, n);

会有溢出呀,所以找了一个程序。

喜欢散步 发表于 2014-5-16 22:45:10

看看数学书, M的N次方的公式是怎么样的, 你可能就看懂上面的程序了。

向往青莲 发表于 2014-5-16 22:50:26

勿语静候 发表于 2014-5-16 18:27 static/image/common/back.gif
会有溢出呀,所以找了一个程序。

那就用中国剩余定理。。。。效率高。。。。求平方用这个。。。算法。。。。

勿语静候 发表于 2014-5-18 20:12:06

oggplay 发表于 2014-5-16 22:48 static/image/common/back.gif
恩,清醒了一下明白了,它把3位数放到一个数组里边(即小于1000的数),比如16的3次方=4096,他把096放到最 ...

可是为什么一个数组要存3位数呀?望解释,谢谢

勿语静候 发表于 2014-5-18 20:43:22

勿语静候 发表于 2014-5-18 20:12 static/image/common/back.gif
可是为什么一个数组要存3位数呀?望解释,谢谢

想明白了,谢谢啦!!!!
页: [1]
查看完整版本: 新人求助,好心人快来呀!!!!