实际题目

本题要求实现一个打印非负整数阶乘的函数。

函数接口定义:

void Print_Factorial ( const int N );

其中N是用户传入的参数,其值不超过1000。如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印“Invalid input”。

裁判测试程序样例:

#include <stdio.h>

void Print_Factorial ( const int N );

int main()
{
int N; scanf("%d", &N);
Print_Factorial(N);
return 0;
} /* 你的代码将被嵌在这里 */

输入样例:

15

输出样例:

1307674368000

通过代码

 void Print_Factorial ( const int N ){
int a[];
int n=N;
if(n<||n>){
printf("Invalid input");
return ;
}
if(n==){
printf("");
return ;
}
else{
int w=;
int i=, j=;
int t=n;
int k=; // 表示数据的位数。 i=, k=;
while(t) //把数字按位数传入数组
{
a[i++] = t%;
t/=;
k++;
} for (j=n-; j>; j--) //开始阶乘
{
w=; // 表示进位
for (i=; i<k; i++)
{
t = a[i]*j+w; //每个位数乘乘数因子+是否进位
a[i] = t%;
w = t/;
} while(w) //需要进位了
{
a[i++] = w%;
w/=;
k++;
}
}
int ttt=;
int ii=; for (ii=k-; ii>=; ii--)
{
printf("%d",a[ii]);
} }
return ; }

知识点分析

求阶乘,数过大,使用了数组进行存储

例子中1000阶乘大约2500位,所以使用数组a[3000]

建立一个计算的函数

int fanc(int n)
{
int w=0;
int i=0, j=0;
int t=n;
int k=0; // 表示数据的位数。

i=0, k=0;
while(t) //把数字按位数传入数组
{
a[i++] = t%10;
t/=10;
k++;
}

for (j=n-1; j>1; j--) //开始阶乘
{
w=0; // 表示进位
for (i=0; i<k; i++)
{
t = a[i]*j+w; //每个位数乘乘数因子+是否进位
a[i] = t%10;
w = t/10;
}

while(w) //需要进位了
{
a[i++] = w%10;
w/=10;
k++;
}
}
return k;
}

建立一个打印的函数

个位存在数组第一个位置,十位存在第二个,以此类推,

所以输出的时候要反向输出。

123是按照 3 2 1存储的

void show(int k)
{
int i=0;
printf("位数 %d 位\n",k);
for (i=k-1; i>=0; i--)
{
printf("%d",a[i]);
}
}

引用博客

链接:

大数运算_求1000的阶乘(C语言实现)

引用代码

 // 1000 的阶乘 2568 位
#include <stdio.h> int a[]; void show(int k)
{
int i=;
printf("位数 %d 位\n",k);
for (i=k-; i>=; i--)
{
printf("%d",a[i]);
}
} int fanc(int n)
{
int w=;
int i=, j=;
int t=n;
int k=; // 表示数据的位数。 i=, k=;
while(t)
{
a[i++] = t%;
t/=;
k++;
} for (j=n-; j>; j--)
{
w=; // 表示进位
for (i=; i<k; i++)
{
t = a[i]*j+w;
a[i] = t%;
w = t/;
} while(w)
{
a[i++] = w%;
w/=;
k++;
}
}
return k;
} int main()
{
int n;
int k=; scanf("%d",&n);
k = fanc(n);
show(k);
printf("\n");
return ;
}

#035 大数阶乘 PTA题目6-10 阶乘计算升级版 (20 分)的更多相关文章

  1. PAT 基础编程题目集 6-10 阶乘计算升级版 (20 分)

    本题要求实现一个打印非负整数阶乘的函数. 函数接口定义: void Print_Factorial ( const int N ); 其中N是用户传入的参数,其值不超过1000.如果N是非负整数,则该 ...

  2. PTA 7-1 邻接矩阵表示法创建无向图 (20分)

    PTA 7-1 邻接矩阵表示法创建无向图 (20分) 采用邻接矩阵表示法创建无向图G ,依次输出各顶点的度. 输入格式: 输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶 ...

  3. PTA数据结构 习题2.8 输出全排列 (20分)

    习题2.8 输出全排列 (20分) 请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间. 输入格式: 输入给出正整数n(<10 ...

  4. PTA数据结构 习题2.1 简单计算器 (20分)

    习题2.1 简单计算器 (20分) 模拟简单运算器的工作.假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算. 输入格式: 输入在一行中给出一个四则运算 ...

  5. PTA | 1008 数组元素循环右移问题 (20分)

    一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1--AN-1)变换为(AN-M -- AN-1 A0 ...

  6. 【九度OJ】题目1179:阶乘 解题报告

    [九度OJ]题目1179:阶乘 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1179 题目描述: 输入n, 求y1=1!+3!+-m ...

  7. PTA题目集7-9总结

    PTA题目集7-9总结 一.前言 题目集七:该题集为轮到图形卡片排序游戏题,主要考查的知识点有类的继承,ArrayList泛型的使用,Compabale接口的运用,多态的使用方法以及接口的应用,难度较 ...

  8. PTA题目集总结

    PTA题目集1-3总结 一:前言 我认为题目集一的有八个题目,题量可能稍微有点多,但是题型较为简单,基本为入门题:题集二有五道题,题量适度,难度也适中:题集三虽然只有三道题,但是难度却骤然提升,前两题 ...

  9. for循环计算某个数的阶乘、阶乘和及其倒数的阶乘和

    //4的阶乘 int jc = 4; //定义一个变量用来代表要计算的数值 long jd =1; //定义最终输出的阶乘 for(int i = 1; i <= jc;i++) //定义循环加 ...

随机推荐

  1. redis 安装-配置

    下载链接: wget http://download.redis.io/releases/redis-4.0.9.tar.gz ※ 如果没有  直接复制url 到浏览器下载 1:下载完成 2:解压 t ...

  2. 【机器学习笔记五】聚类 - k均值聚类

    参考资料: [1]Spark Mlib 机器学习实践 [2]机器学习 [3]深入浅出K-means算法  http://www.csdn.net/article/2012-07-03/2807073- ...

  3. POST不同提交方式对应的Content-Type,及java服务器接收参数方式

    POST不同提交方式对应的Content-Type,及java服务器接收参数方式 注:本博客参考了网上的文章结合自己工作总结后所写,主要用于记录自己工作所得,如有错误请批评指正. 简介: Conten ...

  4. 解决微信公众号授权登录和开放平台微信第三方应用授权登录获取到的用户Openid关联问题

    开发背景: 最近一段时间一直在做关于微信方面的网站应用开发,这段时间也收获的不少关于微信开发方面的开发技能,接触的比较多的主要有微信公众号和微信网站app第三方登录授权,以及微信会员卡,优惠券和扫描二 ...

  5. 我所不知道的Makefile语法

    问题一: $(CC) -c $^ -o $(ROOT_DIR)/$(OBJS_DIR)/$@ 这里的$^和$@是设么意思? 经过查找,该特殊符号的用法如下: 假如:all:library.cpp ma ...

  6. 团队选题报告(bull beer)

    一.团队成员及分工 团队名称:bull beer 团队成员: 黄文东:选题报告word撰写 沈培:原型设计,博客撰写,ppt制作 邓泽中:住院 刘帅:查找相关资料 二.选题报告内容 项目名称:学费管理 ...

  7. C#利用NPOI操作Excel文件

    NPOI作为开源免费的组件,功能强大,可用来读写Excel(兼容xls和xlsx两种版本).Word.PPT文件.可是要让我们记住所有的操作,这便有点困难了,至此,总结一些在开发中常用的针对Excel ...

  8. vue工程利用pubsub-js实现兄弟组件之间的通信

    前言 项目是基于vue-cli创建的,不会搭建vue开发环境的同学可以百度,这里不再赘述. 步骤流程 vue项目搭建完成之后的文件图如下: 我的上一篇博客已经详细叙述vue工程中各个文件的作用,不清楚 ...

  9. 旅行商问题(Traveling Salesman Problem,TSP)的+Leapms线性规划模型及c++调用

    知识点 旅行商问题的线性规划模型旅行商问题的+Leapms模型及CPLEX求解C++调用+Leapms 旅行商问题 旅行商问题是一个重要的NP-难问题.一个旅行商人目前在城市1,他必须对其余n-1个城 ...

  10. Asp.Net Core 轻松学-玩转配置文件

    前言     在 .NET Core 项目中,配置文件有着举足轻重的地位:与.NetFramework 不同的是,.NET Core 的配置文件都以 .json 结尾,这表示一个标准的 json 格式 ...