阶乘问题(大数阶乘)简单 n! (一个大数与一个小数相乘的算法 、一个大数与一个小数的除法算法 *【模板】 )
sdut oj 简单n!
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入
题目有多组数据,处理到文件结尾。输入一个数n。
输出
输出阶乘,形式如:4! = 24.每组数据输出后跟一个空行。
示例输入
1
4
示例输出
0! = 1
1! = 1 0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
提示
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <cctype>
#include <string> using namespace std; //实现1->150的阶乘 int main()
{
int r[];
int i, j, k, c;
int t;
int n;
while(scanf("%d", &n)!=EOF)
{
if(n==)
{
printf("0! = 1\n\n");
continue;
}
if(n==)
{
printf("0! = 1\n1! = 1\n\n");
continue;
} printf("0! = 1\n1! = 1\n");
for(i=; i<=; i++)
{
r[i]=;
} r[]=j=;
for(i=; i<=n; i++)
{
for(k=; k<j; k++)
{
r[k]=r[k]*i;
}
for(k=c=; k<j; k++ )
{
t=r[k]+c;
r[k]=t%;
c=t/;
}
while(c)
{
r[j]=c%;
c=c/;
j++;
} //处理高位的那部分的进位问题
//printf("%d---\n", j) ;
printf("%d! = ", i );
for(k=j-; k>=; k--)
{
printf("%d", r[k] );
}
printf("\n");
}
printf("\n");
} return ;
} 除法的没涉及!有待添加 /**************************************
Problem id : SDUT OJ 2059
Result : Accepted
Take Memory : 496K
Take Time : 10MS
Submit Time : 2015-01-11 08:22:42
**************************************/
HDU OJ n!
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
#include <algorithm>
#define mem(a) memset(a, 0, sizeof(a));
using namespace std;
int r[];
int pos[]; void jiecheng(int n)
{
int i, j, k, c, t;
mem(r);
r[]=j=;
for(i=; i<=n; i++)
{
for(k=; k<j; k++)
{
r[k]=r[k]*i; //上一行的数值进行 乘计算
} //逐位进行计算
for(k=c=; k<j; k++) //初始进位数为0
{
t=r[k]+c; //当前值+进位数
r[k]=t%; //取余即为该位数
c=t/; //进位数
}
while(c)
{
r[j]=c%;
c=c/;
j++;
}
}
for(i=j-; i>=; i--)
printf("%d", r[i]);
printf("\n");
} int main()
{
int n;
while(scanf("%d", &n)!=EOF)
{
if(n== ||n==)
{
printf("1\n");
continue;
}
else
{
jiecheng(n);
}
}
return ;
}
顺便提一下,如何计算一个数n的阶乘结果的位数,这是数学方法,不理解的话记住就好!
所谓n!的十进制位数,就是 log(n)+1, 根据数学公式有:n!=1*2*3*.....*n;
lg(n!)=lg(2)+......lg(n);
代码:
#include <string>
#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <cmath> using namespace std; int main()
{
long int n;
long int i;
double sum; while(scanf("%ld", &n)!=EOF)
{
sum=0.0;
for(i=; i<=n; i++)
{
sum+=log10(i);
}
printf("%ld\n", (int)sum+ );
}
return ;
}
阶乘问题(大数阶乘)简单 n! (一个大数与一个小数相乘的算法 、一个大数与一个小数的除法算法 *【模板】 )的更多相关文章
- nyist28大数阶乘
http://acm.nyist.net/JudgeOnline/problem.php?pid=28 大数阶乘 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 我们 ...
- 大数阶乘(c语言)
大数阶乘.代码比较简单. #include<stdio.h> #include<string.h> #define MAXN 25000 // 如果你的阶乘N比较大,建议大一点 ...
- 【大数阶乘】NYOJ-28
大数阶乘 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数 ...
- 大数阶乘 nyoj
大数阶乘 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数 ...
- 【ACM】大数阶乘 - Java BigInteger实现
大数阶乘 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数 ...
- nyoj___大数阶乘
http://acm.nyist.net/JudgeOnline/problem.php?pid=28 大数阶乘 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 我们都知 ...
- HDU 1133 Buy the Ticket (数学、大数阶乘)
Buy the Ticket Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- 51nod1057—N的阶乘—(大数阶乘)
1057 N的阶乘 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 输入N求N的阶乘的准确值. Input 输入N(1 <= N <= ...
- 大数阶乘(c++实现)
#include <iostream>using namespace std;#define N 1000int BigNumFactorial(int Num[], int n);voi ...
- np问题(大数阶乘取模)
转自 np问题 题目描述: LYK 喜欢研究一些比较困难的问题,比如 np 问题. 这次它又遇到一个棘手的 np 问题.问题是这个样子的:有两个数 n 和 p,求 n 的阶乘对 p 取模后的结果. L ...
随机推荐
- CSS参数介绍
原文发布时间为:2008-08-03 -- 来源于本人的百度文章 [由搬家工具导入] 行高 line-height: 16px 宽度 (具体位置)-width: 16px 文字 ...
- msp430项目编程55
msp430综合项目---扩展项目五55 1.电路工作原理 2.代码(显示部分) 3.代码(功能实现) 4.项目总结
- Xen虚拟化
Xen虚拟化基础 Xen虚拟化类型 hypervisor Xen组件 Xen hypervisor Colletion CPU.Memory.Interrupter Domain0 ---> D ...
- LightOJ1234 Harmonic Number 调和级数求和
[题目] [预备知识] ,其中r是欧拉常数,const double r= 0.57721566490153286060651209; 这个等式在n很大 的时候 比较精确. [解法]可以在 n较小的时 ...
- 使用icomoon把svg图片生成字体图标
今天看了使用icomoon来将svg转换成图标字体,本来是不会使用别人给的svg,也不清楚具体的好处是什么,查了svg以后,越来越懵,svg挺好的为什么要转成图标字体呢. 一.SVG介绍 SVG 是一 ...
- Executors
提供了工厂方法: Factory and utility methods for Executor, ExecutorService, ScheduledExecutorService, Thread ...
- java ssh 面试题
1.什么是hibernate及hibernate工作原理.流程和为什么要用Hibernate? 答: 定义:Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级 ...
- 使用ftrace学习linux内核函数调用
http://www.cnblogs.com/pengdonglin137/articles/4752082.html 转载: http://blog.csdn.net/ronliu/article/ ...
- SolidEdge如何打开或关闭自动标注尺寸
工具-聪慧-自动标注尺寸
- lua 获取当前执行目录 lfs 库
lua lfs 库 lfs.attributes(filepath [, aname]) 获取路径指定属性 lfs.chdir(path) 改变当前工作目录,成功返回true,失败返回nil加上错误信 ...