#035 大数阶乘 PTA题目6-10 阶乘计算升级版 (20 分)
实际题目
本题要求实现一个打印非负整数阶乘的函数。
函数接口定义:
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 的阶乘 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 分)的更多相关文章
- PAT 基础编程题目集 6-10 阶乘计算升级版 (20 分)
本题要求实现一个打印非负整数阶乘的函数. 函数接口定义: void Print_Factorial ( const int N ); 其中N是用户传入的参数,其值不超过1000.如果N是非负整数,则该 ...
- PTA 7-1 邻接矩阵表示法创建无向图 (20分)
PTA 7-1 邻接矩阵表示法创建无向图 (20分) 采用邻接矩阵表示法创建无向图G ,依次输出各顶点的度. 输入格式: 输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶 ...
- PTA数据结构 习题2.8 输出全排列 (20分)
习题2.8 输出全排列 (20分) 请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间. 输入格式: 输入给出正整数n(<10 ...
- PTA数据结构 习题2.1 简单计算器 (20分)
习题2.1 简单计算器 (20分) 模拟简单运算器的工作.假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算. 输入格式: 输入在一行中给出一个四则运算 ...
- PTA | 1008 数组元素循环右移问题 (20分)
一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1--AN-1)变换为(AN-M -- AN-1 A0 ...
- 【九度OJ】题目1179:阶乘 解题报告
[九度OJ]题目1179:阶乘 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1179 题目描述: 输入n, 求y1=1!+3!+-m ...
- PTA题目集7-9总结
PTA题目集7-9总结 一.前言 题目集七:该题集为轮到图形卡片排序游戏题,主要考查的知识点有类的继承,ArrayList泛型的使用,Compabale接口的运用,多态的使用方法以及接口的应用,难度较 ...
- PTA题目集总结
PTA题目集1-3总结 一:前言 我认为题目集一的有八个题目,题量可能稍微有点多,但是题型较为简单,基本为入门题:题集二有五道题,题量适度,难度也适中:题集三虽然只有三道题,但是难度却骤然提升,前两题 ...
- for循环计算某个数的阶乘、阶乘和及其倒数的阶乘和
//4的阶乘 int jc = 4; //定义一个变量用来代表要计算的数值 long jd =1; //定义最终输出的阶乘 for(int i = 1; i <= jc;i++) //定义循环加 ...
随机推荐
- WPF软件开发系统之三——自助购票取票、自助选座系统
本系统使用.Net WPF开发,运行于Windows操作系统,电脑或者触摸屏设备(包括竖屏). 本系统开发背景:景点.影院.或商场的自助购票.取票系统. 图书馆.自习室的选座.占座系统. 功能包括:选 ...
- MYSQL 主从复制,读写分离(8)
Mysql 数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据文件,而是通过binlog日志复制到需要同步的服务器上. 一 主从复制的原理实现 原理图解说: 数据库更改 生成数据 ...
- Android JS桥交互("Uncaught ReferenceError: xxx is not defined or xxx has no method")
网上android和js交互的代码有不少,也很容易搜到.最近在做的项目需要用到js桥,遇到了一些问题,记录下来,希望以后遇到能马上解决掉. 一开始我找的demo是从这个:http://blog.csd ...
- 在macos上基于python2.7安装PyQt5
在python3上面安装PyQt5是十分简单的,可是,在python2.7上安装这个东西,着实让人折腾了一把.要总结一下,年纪大了,记性不好. 首先要安装最新版的Qt和python2,命令如下: br ...
- CAS、原子操作类的应用与浅析及Java8对其的优化
前几天刷朋友圈的时候,看到一段话:如果现在我是傻逼,那么我现在不管怎么努力,也还是傻逼,因为我现在的傻逼是由以前决定的,现在努力,是为了让以后的自己不再傻逼.话糙理不糙,如果妄想现在努力一下,马上就不 ...
- springcloud之服务注册与发现(zookeeper注册中心)-Finchley.SR2版
新年第一篇博文,接着和大家分享springcloud相关内容:本次主要内容是使用cloud结合zookeeper作为注册中心来搭建服务调用,前面几篇文章有涉及到另外的eureka作为注册中心,有兴趣的 ...
- KeyboardUtil【软键盘弹出后输入框上移一定的高度】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 演示获取软键盘高度并保存,然后根据输入框的原有位置是否被软键盘挡住了,如果被挡住了则将整体页面上移一定的高度,当软键盘隐藏的时候再下 ...
- java~mac下的终端工具oh-my-zsh
mac操作系统类似于linux,很多命令都是兼容的,确实挺好用,对于java,docker,git等开发来说,终端命令行是非常必要的工具,这里我介绍一下item2+oh-my-zsh的安装与使用. 安 ...
- dmidecode的Python解析
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 解析dmidecode命令输出结果,返回JSON格式数据 测试服务器D ...
- [JavaScript] 函数节流(throttle)和函数防抖(debounce)
js 的函数节流(throttle)和函数防抖(debounce)概述 函数防抖(debounce) 一个事件频繁触发,但是我们不想让他触发的这么频繁,于是我们就设置一个定时器让这个事件在 xxx 秒 ...