返回狼盟编程首页
编程搜索 [狼盟旧档]
论坛统计


请输入搜索关键字:
├─◆ 狼盟首页 > 查看贴子 > 详细信息

楼主

求一个数的n次方


以前在Qbasic的乘方符号是“^”,

现在请问C里面有没有标准函数

或者是运算符号来算n次方的??





hpux [ 1 楼 ]
2006-01-30 10:04:00

#include <math.h>
double pow(double value,double power);
求某个数的乘方 

tianyuan008 [ 2 楼 ]
2006-01-30 12:29:00
c++里面可以重载操作符的。

vb.net也可以重载操作符。

你翻出头文件来看看,想办法重载,不要和原来的运算符的参数表雷同。 

ccpp [ 3 楼 ]
2006-01-30 16:06:00

对于一个数的N次很容易超出一般类型的表示范围,
如double 。
标准函数没有太大用处,
只能用数组保存每一位的结果! 

ccpp [ 4 楼 ]
2006-01-30 16:15:00
#include <conio.h>
#include <stdio.h>
#define MAX 1000
/*显示最大数字1000位,如需要更大位数,应使用动态内存分配*/
int main()
{
    int a[MAX],b,m,n,i,j,r,carry;

    if(scanf("%d%d",&b,&n) != 2 )/*输入b的n的方*/
    {
        printf("input error!");
        exit(1);
    }
    m = 0; a[m] = 1;    
    for ( j = 0;j < n; j++)  
     {
        for ( carry = 0,i = 0;i <= m;i++)
        {
            r = (a[i] * b) + carry;
            a[i] = r%10;   /*保留i位的结果*/
            carry = r/10;    /*保留进位*/
         }
         if (carry) /*如果有进位*/
         a[++m]=carry;
    }
    for (i = m; i >= 0; i--)
        printf("%d",a[i]);

     getch();
     return 0;


flysun0311 [ 5 楼 ]
2006-01-30 18:50:00
也可以用静态局部变量来做.
其实是也是自找麻烦,不过他还是一种方法. 

iAkiak [ 6 楼 ]
2006-01-30 19:49:00
@ccpp, 4
复杂度为O(n),其实可以改为O(log n)
记得以前讨论过这个的.求b的2的幂的幂相乘
n = 24 = 16 + 8
计算b^16 和 b^8做乘法,不必做24次乘法.
不过那样需要2个大数做乘法.