鱼C论坛

 找回密码
 立即注册
查看: 2014|回复: 7

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

[复制链接]
发表于 2014-5-16 15:13:41 | 显示全部楼层 |阅读模式
1鱼币
#include<iostream>
#include<iomanip>
using namespace std;

int longInt[1000];
int main()
{
        int size = 1;//位数
        int c;//进位
        int n,m;//M的N次方
        int i;
       
        cin >> m >>n;
       
        longInt[0] = 1;
       
        for(i = 0;i < n;i++)
        {
                c = 0;
                for(int j = 0;j < size ;j++)
                {
                        longInt[j] = longInt[j] * m + c;
                        c = longInt[j] / 1000;
                        if(longInt[j] >= 1000)
                        {
                                longInt[j] = longInt[j] % 1000;
                                if(j == size - 1)
                                {
                                        size++;
                                }
                        }
                }
        }
        for(i = size - 1;i > -1;i--)
        {
                if(i != size - 1)
                {
                        cout << setw(3) << setfill('0');
                }
                cout <<longInt[i];
        }
        cout << endl;
       
        return 0;
}


有哪位好心人详细的给我解释下这段求m的n次幂的代码么,计算机专业大一新生求助!!!!

最佳答案

查看完整内容

恩,清醒了一下明白了,它把3位数放到一个数组里边(即小于1000的数),比如16的3次方=4096,他把096放到最低地址的数组里,然后把4放到高地址的数组里,即longint[0]=096,longint[1]=4,如果是40096呢?longint[0]=096,longint[1]=40,如果是123456789呢?longint[0]=789,longint[1]=456,longint[2]=123。打印当然是数组高位往低打了。这就是为什么中间的数组他要setw(3)的原因。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-16 15:13:42 | 显示全部楼层
本帖最后由 oggplay 于 2014-5-17 00:08 编辑

恩,清醒了一下明白了,它把3位数放到一个数组里边(即小于1000的数),比如16的3次方=4096,他把096放到最低地址的数组里,然后把4放到高地址的数组里,即longint[0]=096,longint[1]=4,如果是40096呢?longint[0]=096,longint[1]=40,如果是123456789呢?longint[0]=789,longint[1]=456,longint[2]=123。打印当然是数组高位往低打了。这就是为什么中间的数组他要setw(3)的原因。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-16 17:29:01 | 显示全部楼层
求m的n次方不是有个c语言函数么?。。貌似是pow(m, n);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-5-16 18:27:27 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-16 22:45:10 | 显示全部楼层
看看数学书, M的N次方的公式是怎么样的, 你可能就看懂上面的程序了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-16 22:50:26 | 显示全部楼层
勿语静候 发表于 2014-5-16 18:27
会有溢出呀,所以找了一个程序。

那就用中国剩余定理。。。。效率高。。。。求平方用这个。。。算法。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-5-18 20:12:06 | 显示全部楼层
oggplay 发表于 2014-5-16 22:48
恩,清醒了一下明白了,它把3位数放到一个数组里边(即小于1000的数),比如16的3次方=4096,他把096放到最 ...

可是为什么一个数组要存3位数呀?望解释,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-5-18 20:43:22 | 显示全部楼层
勿语静候 发表于 2014-5-18 20:12
可是为什么一个数组要存3位数呀?望解释,谢谢

想明白了,谢谢啦!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 00:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表