作者:林子木
大体思路就是
用递归的方法求幂的次数
其中乘法,使用大数乘法的原理,不拘泥本题的六位的输入
其中整型字符串 和 字符串转整型 采用自己写的函数,如果使用系统自带的,速率会跟高些。
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]