可怕的阶乘
来源:互联网 发布:linux火狐57乱码 编辑:程序博客网 时间:2024/04/28 15:22
void CalcNN(int n, char *pOut)
{
if(n < 0 || n > 100 || pOut == NULL)
return;
if(n == 0 || n == 1)
{
pOut[0] = '1';
pOut[1] = '\0';
return;
}
int i = 0;
int j = 0;
int k = 0;
int carry = 0; //记录进位
int length = 1; //记录数组长度
int temp = 0; //临时变量
int a[1000] = {0}; //临时整型数组
a[0] = 1;
for(i = 2; i <= n; ++i) //控制阶乘数
{
carry = 0; //每次新循环进位清零
for(j = 0; j < length; ++j)
{
temp = a[j] * i + carry; //存储临时结果
a[j] = temp % 10; //保留个位数
carry = temp / 10; //记录进位
}
while(carry) //最后一位进位数可能大于10
{
a[length] = carry % 10;
length++;
carry /= 10;
}
}
for(i = length - 1; i >= 0; i--) //存储字符数组
{
pOut[k] = a[i] +'0';
k++;
}
pOut[k] = '\0';
return;
}
{
if(n < 0 || n > 100 || pOut == NULL)
return;
if(n == 0 || n == 1)
{
pOut[0] = '1';
pOut[1] = '\0';
return;
}
int i = 0;
int j = 0;
int k = 0;
int carry = 0; //记录进位
int length = 1; //记录数组长度
int temp = 0; //临时变量
int a[1000] = {0}; //临时整型数组
a[0] = 1;
for(i = 2; i <= n; ++i) //控制阶乘数
{
carry = 0; //每次新循环进位清零
for(j = 0; j < length; ++j)
{
temp = a[j] * i + carry; //存储临时结果
a[j] = temp % 10; //保留个位数
carry = temp / 10; //记录进位
}
while(carry) //最后一位进位数可能大于10
{
a[length] = carry % 10;
length++;
carry /= 10;
}
}
for(i = length - 1; i >= 0; i--) //存储字符数组
{
pOut[k] = a[i] +'0';
k++;
}
pOut[k] = '\0';
return;
}
0 0
- 可怕的阶乘
- 可怕的阶乘
- 可怕的阶乘
- 可怕的阶乘
- 可怕的阶乘
- 可怕的阶乘
- 【求教】可怕的阶乘
- 可怕的阶乘 - 大整数乘数
- 华为机试题:可怕的阶乘
- 大整数(可怕的阶乘)
- OJ 系列之可怕的n的阶乘
- [华为机试练习题]17.可怕的阶乘
- 上机题目(中级)-可怕的阶乘(Java)
- 可怕的SoftEther
- 可怕的程序溢出
- 最“可怕”的老师
- 六种最可怕的病毒
- 可怕的天气
- DLL(动态链接库)编程 (概论)
- [leetcode]LRU Cache (python)
- Sublime text 入门学习资源篇及其基本使用方法
- JDBC 常用函数实例说明
- POJ 2646 The Trip
- 可怕的阶乘
- Light OJ 1004
- 判断两台计算机IP地址是同一子网络 华为OJ训练平台---转载
- 用InstallAnywhere工具打包J2EE程序为.exe文件
- 取石子(一)
- spring学习之@SessionAttributes
- 求M的N次方的最后三位 转载
- hdu 1503:Advanced Fruits(动态规划+路径输出)
- shell数组排序、二分查找