阶乘

算法笔记5.6--N的阶乘

吃可爱长大的小学妹 提交于 2020-01-26 08:58:19
题目描述 输入一个正整数N,输出N的阶乘。 输入 正整数N(0<=N<=1000) 输出 输入可能包括多组数据,对于每一组输入数据,输出N的阶乘 样例输入 0 4 7 样例输出 1 24 5040 代码: struct bign { int d [ 1000 ] ; int len ; bign ( ) { memset ( d , 0 , sizeof ( d ) ) ; len = 0 ; } } ; bign change ( char str [ ] ) { bign a ; a . len = strlen ( str ) ; for ( int i = 0 ; i < a . len ; i ++ ) { a . d [ i ] = str [ a . len - i - 1 ] - '0' ; } return a ; } bign multi ( bign a , int b ) { bign c ; int carry = 0 ; for ( int i = 0 ; i < a . len ; i ++ ) { int temp = a . d [ i ] * b + carry ; c . d [ c . len ++ ] = temp % 10 ; carry = temp / 10 ; } while ( carry != 0 ) { c . d [ c .

PTA——6-10 阶乘计算升级版

久未见 提交于 2020-01-23 23:53:07
要求: 实现一个打印非负整数阶乘的函数 N是用户传入的参数,其值不超过1000。如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印“Invalid input” 1 #include <stdio.h> 2 3 void Print_Factorial( const int N); 4 int main(){ 5 int N; 6 scanf("%d",&N); 7 Print_Factorial(N); 8 return 0; 9 } 10 void Print_Factorial( const int N){ 11 if(N<0){ 12 puts("Invalid input"); 13 return; 14 } 15 16 int num[3001]={0}; 17 int k,n; 18 k=1; //位数 19 n=0; //进位 20 num[0]=1; 21 int tmp; 22 23 //将临时结果的每位与阶乘元素相乘 24 for(int i=2;i<=N;i++){ 25 for(int j=0;j<k;j++){ 26 tmp=num[j]*i+n; 27 num[j]=tmp%10; 28 n=tmp/10; 29 } 30 while(n){ 31 num[k++]=n%10; 32 n/=10; 33 } 34 } 35 for(int

6-8 简单阶乘计算 (10分)

左心房为你撑大大i 提交于 2020-01-23 10:41:07
本题要求实现一个计算非负整数阶乘的简单函数。 函数接口定义: int Factorial( const int N ); 其中 N 是用户传入的参数,其值不超过12。如果 N 是非负整数,则该函数必须返回 N 的阶乘,否则返回0。 裁判测试程序样例: #include <stdio.h> int Factorial( const int N ); int main() { int N, NF; scanf("%d", &N); NF = Factorial(N); if (NF) printf("%d! = %d\n", N, NF); else printf("Invalid input\n"); return 0; } /* 你的代码将被嵌在这里 */ 输入样例: 5 输出样例: 5! = 120 int Factorial( const int N ) { int factor = 1; int is_factor = 0; if(N <= 12 && N > 0) { for(int i = 1; i <= N; i++) { factor *= i; } is_factor = factor; } else if(N == 0) { is_factor = 1; } else { is_factor = 0; } return is_factor; } 来源: CSDN

求某数的阶乘以及阶乘之和

非 Y 不嫁゛ 提交于 2020-01-11 08:04:30
数字的阶乘 import math Sum=0 num = int(input('请输入一个数字:')) for i in range(1,num+1): F=math.factorial(i) get_num=math.factorial(num) Sum =Sum+F print(num,'的阶乘为',get_num) print('阶乘之和:',Sum) 来源: CSDN 作者: LY_dreams 链接: https://blog.csdn.net/MengJing_/article/details/103796453

PTA 7-5 阶乘和 (10分)

孤街醉人 提交于 2020-01-07 22:43:50
计算阶乘和Sum= 1!+2!+...+n! 对1000000007求模的结果(不含前导0)。 输入格式: 输入若干个整数 ,其中每个整数 N ,满足1<=N<=20000000。 输出格式: 输出对应各个整数的阶乘和对1000000007求模的结果,每个一行,最后一行后面一样有换行符。 输入样例: 在这里给出一组输入。例如: 5 18 200000000 输出样例: 在这里给出相应的输出。例如: 153 478885618 9949683 作者: 黄华毅 单位: 华南师范大学 时间限制: 1500 ms 内存限制: 64 MB 代码长度限制: 16 KB 1 import java.util.Scanner; 2 public class Main { 3 public static void main(String[] args) { 4 Scanner sc=new Scanner(System.in); 5 while(sc.hasNext()) { 6 long n=sc.nextLong(),sum=0L,s=1L; 7 for(long i=1L;i<=n;i++) { 8 s=s%1000000007L; 9 s*=i; 10 sum=sum%1000000007L+s%1000000007L; 11 } 12 System.out.println(sum

n的阶乘

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-07 16:51:39
#include <iostream> using namespace std; // n的阶乘 -- 1. 递归方法(必须要是返回值函数,而不能是void类型函数) int factorial1(int n) {   if (n <= 0)     printf("值为负数,不能判断!!!\n\n");   else if (n==1)     return 1;   else     return n * factorial1(n - 1); } // n的阶乘 -- 2. 循环方法 int factorial2(int n) {   int mul=1;   while (true) {     mul *= n;     n--;     if (n == 1)       break;   }   return mul; } int main() {   int n;   cin >> n;   printf("递归:数 %d 的阶乘是 %d\n", n,factorial1(n));   printf("循环:数 %d 的阶乘是 %d\n", n, factorial2(n));;   return 1; } 来源: https://www.cnblogs.com/TyranRex/p/12162184.html

JS中用for实现n的阶乘

纵饮孤独 提交于 2020-01-02 20:03:40
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <p><input type="text" name="jc" id="jc" placeholder="请输入数字" /></p> <p><input type="button" id="sub" value="确定" onclick="myfun()"/></p> <p>结果为:<span id="jg"></span></p> <script type="text/javascript"> function myfun () { var x=document.getElementById("jc").value; var res=document.getElementById("jg"); var i=1; var sum=1; for (;i<=x;i++) { sum=sum*i; } res.innerHTML=sum; } </script> </body> </html> 来源: https://www.cnblogs.com/yan-linxi/p/8057163.html

AcWing 886 求组合数 II

僤鯓⒐⒋嵵緔 提交于 2020-01-01 22:14:56
题目描述: 给定n组询问,每组询问给定两个整数a,b,请你输出C(a,b) mod (10^9+7)的值。 输入格式 第一行包含整数n。接下来n行,每行包含一组a和b。 输出格式 共n行,每行输出一个询问的解。 数据范围 1≤n≤100000,1≤b≤a≤10^5 输入样例: 3 3 1 5 3 2 2 输出样例: 3 10 1 分析: 本题的a和b最多高达十万级别,10^10运算量无法在一秒内预处理出来,但是n的大小只有十万,如果我们能在O(1)的时间内求出每一个组合数的值,便可以满足题目的时间复杂度要求。C(n,m) = n! / (m! * (n-m)!),我们只需要预处理出100000个数的阶乘以及阶乘的逆元即可,为什么要求阶乘的逆元?在 AcWing 875 快速幂 中总结了模p的加减乘以及乘方运算,但是没有除法运算,有(a / b) mod p != (a mod p) / (b mod p),比如p = 5,a = 6,b = 2,(6 / 2)mod 5 = 3,但(6 mod 5) / (2 mod 5) = 0,所以我们将乘法运算转化为乘上模p的乘法逆元运算,本题的p为质数,故可以用快速幂求逆元。fact[i]表示i的阶乘,而infact[i]表示i阶乘的逆元,即infact[i] = fact[i]^(p - 2) mod p。当然具体在预处理时计算fact

python中的内置高阶函数(map,reduce及filter)

情到浓时终转凉″ 提交于 2019-12-27 02:26:20
文章目录 一.高阶函数的定义 二.内置高阶函数map 1.map函数用法 2.map函数例题:1.对一个序列[-1,3,-4,-5]的每一个元素求绝对值;2.对序列的每个元素求阶乘 三.内置高阶函数reduce 1.reduce函数用法 2.利用reduce求数的阶乘或求数的和 四.内置函数filter 1.filter函数的用法 2.利用filter函数求1-100的偶数 一.高阶函数的定义 高阶函数 -实参是一个函数 -函数的返回值也是一个函数 运行结果: 二.内置高阶函数map 1.map函数用法 map():接收两个参数 一个是函数 一个是序列 map将传入的函数依次作用到序列的每个元素 并且把结果作为新的序列返回 2.map函数例题:1.对一个序列[-1,3,-4,-5]的每一个元素求绝对值;2.对序列的每个元素求阶乘 题目1:对一个序列[-1,3,-4,-5]的每一个元素求绝对值 代码: 运行结果: 题目2:对序列的每个元素求阶乘 代码: 运行结果: 三.内置高阶函数reduce 1.reduce函数用法 reduce():把一个函数作用在一个序列上,这个函数必须接收两个参数 reduce把结果继续和序列的下一个元素做累积计算 reduce(f,[1,2,3,4]) = f(f(f(1,2),3),4) python2:reduce是内置函数 python3.x

递归调用

左心房为你撑大大i 提交于 2019-12-21 04:11:12
1.组合式公式 设计思想 实验要求输入两个数求组合数,首先要输这两个数才能进行程序,输入后,根据组合数公式中全是阶乘,使用递归比较方便,n!=n*(n-1)*......1,递归中返回n*zuheshu(n-1),实现阶乘,最后调用阶乘函数,输出就完成程序。 程序流程图 实验源代码 import java.util.Scanner; public class Sz { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner input=new Scanner(System.in); int a; int b; int c; //定义所需的三个变量 System.out.println("输入组合数公式所需的数:"); a=input.nextInt(); b=input.nextInt(); //对要计算的两个变量进行赋值。 while(a==0||a<=b) { System.out.println("无法计算,重新输入"); } //判断底下的除数是否可除 c=zuheshu(a)/(zuheshu(b)*zuheshu(a-b));//用递归函数对a,b进行赋值计算后传给c。 System.out.println("组合数为