阶乘问题(大数阶乘)简单 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 ...
随机推荐
- hdu3038 How Many Answers Are Wrong
TT and FF are ... friends. Uh... very very good friends -________-b FF is a bad boy, he is always wo ...
- Contest Hunter #46 T1 磁力块 [分块]
描述 在一片广袤无垠的原野上,散落着N块磁石.每个磁石的性质可以用一个五元组(x,y,m,p,r)描述,其中x,y表示其坐标,m是磁石的质量,p是磁力,r是吸引半径.若磁石A与磁石B的距离不大于磁石A ...
- 跳蚤 BZOJ 4310
跳蚤 [问题描述] 很久很久以前,森林里住着一群跳蚤.一天,跳蚤国王得到了一个神秘的字符串,它想进行研究. 首先,他会把串分成不超过 k 个子串,然后对于每个子串 S,他会从S的所有子串中选择字典序最 ...
- Laravel 视图中的url
<a href="{{ url('url') }}">url</a> <a href="{{ action('StudentControll ...
- spring boot -- 无法读取html文件,碰到的坑
碰到的坑,无法Controller读取html文件 1. Controller类一定要使用@Controller注解,不要用@RestController 2. resource目录下创建templa ...
- Linux主机被SSH精神病(Psychos)暴力攻破后成为肉鸡的攻防过程
近日公司局域网突然变得非常慢,上网受到很大影响,不仅仅是访问互联网慢,就连访问公司内部服务器都感到异常缓慢.于是对本局域网网关进行测试: $ ping 10.10.26.254 发现延时很大, ...
- [Bzoj3676][Apio2014]回文串(后缀自动机)(parent树)(倍增)
3676: [Apio2014]回文串 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 3396 Solved: 1568[Submit][Statu ...
- delphi函数大全
delphi函数大全Abort 函数 引起放弃的意外处理Abs 函数 绝对值函数AddExitProc ...
- setImageEdgeInsets 和 setImage配合使用达到button区域大并可调节其上图片显示区域大小的效果
[self.indicator setImage:[UIImage imageNamed:@"01_login_moreicon@2x.png"] forState:UIContr ...
- iOS开发-用keychain替代UDID
从2013-5-1日开始苹果就禁止对UUID的应用的通过了.所以我们需要用一些办法替换,下面我就是用keychain的访问替换掉UUID的. 那么,关于Keychain的应用,Apple提供了一个叫G ...