java北大oj1001_北大OJ 1001题 Exponentiation

作者:林子木

大体思路就是

用递归的方法求幂的次数

其中乘法,使用大数乘法的原理,不拘泥本题的六位的输入

其中整型字符串 和 字符串转整型 采用自己写的函数,如果使用系统自带的,速率会跟高些。

AC的时间是16MS 内存是232K

这里的主要问题是有块内存不能释放在,在注释的

//free(s2);

//free(s1); 这里的内存指向是最后的char *Int2Str(int *n,int len)中产生的内存

char *MyPow(char *s,int n)

{

char *s1,*s2,*res;

if(n == 1)

{

return Mutli(s,"1");

}

else if(n == 2)

{

return Mutli(s,s);

}

else if(n > 2)

{

s1 = MyPow(s,n>>1);

if(n%2 != 0)

{

s2 = MyPow(s,n-(n>>1));

res = Mutli(s1,s2);

//free(s2);

}

else

{

res = Mutli(s1,s1);

}

//free(s1);

return res;

}

}

代码如下:

#include

#include

#include

#include

#define LENGTH 6

char *MyPow(char *s,int n);

char *Mutli(char *s1,char *s2);

int *Str2Int(char *s,int lenArr);

char *Int2Str(int *n,int len);

int main()

{

char realNumString[LENGTH]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值