当前位置: 首页 > news >正文

函数题 6-10 阶乘计算升级版【PAT】

文章目录

  • 题目
    • 函数接口定义
    • 裁判测试程序样例
    • 输入样例
    • 输出样例
  • 题解
    • 解题思路
    • 完整代码
    • AC代码

编程练习题目集目录

题目

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

函数接口定义

void Print_Factorial ( const int N );

  其中N是用户传入的参数,其值不超过 1000 1000 1000。如果 N N N 是非负整数,则该函数必须在一行中打印出 N ! N! N! 的值,否则打印 “ I n v a l i d i n p u t ” “Invalid input” Invalidinput

裁判测试程序样例

#include <stdio.h>
void Print_Factorial(const int N);
int main()
{int N;scanf("%d", &N);Print_Factorial(N);return 0;
}
/* 你的代码将被嵌在这里 */

输入样例

15

输出样例

1307674368000

题解

解题思路

  首先判断传入函数的数字是否小于 0 0 0,如果小于 0 0 0,则输出 “ I n v a l i d i n p u t ” “Invalid input” Invalidinput;如果是 0 0 0 或者 1 1 1 则直接输出 1 1 1 即可;如果在 2 − 12 2-12 212 之间则可以直接相乘,输出即可;如果大于 12 12 12 则变量无法保存数据,需要使用数组来保存,将结果以数组形式输出即可。

完整代码

#include <stdio.h>void Print_Factorial ( const int N );int main()
{int N;scanf("%d", &N);Print_Factorial(N);return 0;
}/* 你的代码将被嵌在这里 */
void Print_Factorial(const int N)
{if (N < 0){printf("Invalid input\n");}else if (N < 2)             // 0和1的阶层为1{printf("1\n");}else if (N > 1 && N < 13)   // 12及之前都可以用long int型表达{int i = 2;long int sum = 1;for (i; i <= N; i++){sum *= i;}printf("%ld\n", sum);}else{int Num[3000] = { 0 };  // 确保保存最终运算结果的数组足够大:1-9相乘最多有9位,10-99相乘最多有2*90=180位,100-999相乘最多有3*900=2700位,1000是4*1=4位,总计2893,最好数组取大一下int i, j, k, n;k = 1;                  // 位数n = 0;                  // 进位Num[0] = 1;             // 将结果先初始化为1int temp;               // 阶乘的任一元素与临时结果的某位的乘积结果for (i = 2; i <= N; i++){for (j = 0; j < k; j++){temp = Num[j] * i + n;      // 相应阶乘中的一项与当前所得临时结果的某位相乘(加上进位)Num[j] = temp % 10;         // 更新临时结果的位上信息n = temp / 10;              // 看是否有进位}while (n)                       // 如果有进位{Num[k] = n % 10;            // 新加一位,添加信息。位数增1k++;n = n / 10;                 // 看还能不能进位}}for (i = k - 1; i >= 0; i--){printf("%d", Num[i]);}printf("\n");}
}

AC代码

void Print_Factorial(const int N)
{if (N < 0){printf("Invalid input\n");}else if (N < 2)             // 0和1的阶层为1{printf("1\n");}else if (N > 1 && N < 13)   // 12及之前都可以用long int型表达{int i = 2;long int sum = 1;for (i; i <= N; i++){sum *= i;}printf("%ld\n", sum);}else{int Num[3000] = { 0 };  // 确保保存最终运算结果的数组足够大:1-9相乘最多有9位,10-99相乘最多有2*90=180位,100-999相乘最多有3*900=2700位,1000是4*1=4位,总计2893,最好数组取大一下int i, j, k, n;k = 1;                  // 位数n = 0;                  // 进位Num[0] = 1;             // 将结果先初始化为1int temp;               // 阶乘的任一元素与临时结果的某位的乘积结果for (i = 2; i <= N; i++){for (j = 0; j < k; j++){temp = Num[j] * i + n;      // 相应阶乘中的一项与当前所得临时结果的某位相乘(加上进位)Num[j] = temp % 10;         // 更新临时结果的位上信息n = temp / 10;              // 看是否有进位}while (n)                       // 如果有进位{Num[k] = n % 10;            // 新加一位,添加信息。位数增1k++;n = n / 10;                 // 看还能不能进位}}for (i = k - 1; i >= 0; i--){printf("%d", Num[i]);}printf("\n");}
}

相关文章:

函数题 6-10 阶乘计算升级版【PAT】

文章目录 题目函数接口定义裁判测试程序样例输入样例输出样例 题解解题思路完整代码AC代码 编程练习题目集目录 题目 要求实现一个打印非负整数阶乘的函数。 函数接口定义 void Print_Factorial ( const int N ); 其中N是用户传入的参数&#xff0c;其值不超过 1000 1000 10…...

java项目之基于springboot的医院资源管理系统源码

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的医院资源管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风…...

Docker命令全解析:掌握容器化技术的基石

在容器化技术日益普及的今天&#xff0c;Docker作为其中的佼佼者&#xff0c;凭借其轻量级、可移植和易于管理的特性&#xff0c;赢得了广泛的关注和应用。而掌握Docker命令&#xff0c;则是深入理解和高效利用Docker的关键。本文将带您走进Docker命令的世界&#xff0c;从基础…...

2024.9.19

[ABC266F] Well-defined Path Queries on a Namori 题面翻译 题目描述 给定一张有 N N N 个点、 N N N 条边的简单连通无向图和 Q Q Q 次询问&#xff0c;对于每次询问&#xff0c;给定 x i , y i x_i,y_i xi​,yi​&#xff0c;表示两点的编号&#xff0c;请你回答第 x i …...

“跨链桥“的危害

跨链桥&#xff08;Cross-Chain Bridges&#xff09;是连接不同区块链网络的工具&#xff0c;允许用户在不同的区块链之间转移资产和数据。尽管跨链桥为区块链生态系统带来了许多便利&#xff0c;但它们也存在一些潜在的危害和风险。以下是一些主要的危害&#xff1a; 1. 安全…...

GO CronGin

文章目录 Robfig Cron介绍1. **安装 robfig/cron**2. **基本用法**示例&#xff1a;创建一个简单的定时任务3. **Cron 表达式**常用的 Cron 表达式示例&#xff1a;4. **添加和管理任务**5. **上下文支持**6. **使用场景**7. **高级用法**总结 Cron 在Gin中实践使用1. **安装 r…...

手机在网状态查询接口如何用C#进行调用?

一、什么是手机在网状态查询接口&#xff1f; 手机在网状态查询接口是利用实时数据来对手机号码在运营商网络中的状态进行查询的工具&#xff0c;包括正常使用状态、停机状态、不在网状态、预销户状态等。 二、手机在网状态查询适用哪些场景&#xff1f; 例如&#xff1a;商…...

Java面向对象特性与泛型:深入理解与应用

Java作为一种广泛使用的面向对象编程语言&#xff0c;提供了丰富的特性来支持面向对象编程&#xff08;OOP&#xff09;和泛型编程。本文将深入探讨Java的面向对象特性和泛型&#xff0c;以及它们在实际开发中的应用。 1. 面向对象特性 面向对象编程是一种编程范式&#xff0…...

Qwen2.5 本地部署的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。授权多项发明专利。对机器学…...

Oracle数据库pl/sql显式抛出异常

在Oracle PL/SQL中&#xff0c;显式地抛出异常&#xff08;Raising Exceptions Explicitly&#xff09;是一种控制程序流程和处理错误的重要机制。当你希望在某些特定条件下中断程序的执行&#xff0c;并通知调用者发生了错误或异常情况时&#xff0c;可以使用这种机制。下面是…...

Undet for sketchup 2023.3注册机 支持草图大师sketchup2021-2022-2023

1.Undet for sketchup 2023.3支持草图大师sketchup2021-2022-2023。支持机载雷达扫描、车载扫描还是地面扫描&#xff0c;对AEC行业用户来说&#xff0c;真正需要的是如何将这些数据快速处理为三维模型&#xff0c;这样才能将这些信息延展到BIM领域发挥效用。因此面对这些海量的…...

Java详细学习路线:从入门到精通的全方位指南

Java作为一种广泛使用的编程语言&#xff0c;以其跨平台性、强大的库支持和广泛的应用领域&#xff08;如Web开发、Android开发、大数据处理等&#xff09;而著称。对于初学者来说&#xff0c;制定一个清晰、系统的学习路线至关重要。以下是一个从Java基础到高级应用的详细学习…...

Spark 性能优化高频面试题及答案

目录 高频面试题及答案1. 如何通过调整内存管理来优化 Spark 性能&#xff1f;2. 如何通过数据持久化优化性能&#xff1f;3. 如何通过减少数据倾斜&#xff08;Data Skew&#xff09;问题来优化性能&#xff1f;4. 如何通过优化 Shuffle 操作提升性能&#xff1f;5. 如何通过广…...

【洛谷】AT_abc371_e [ABC371E] I Hate Sigma Problems 的题解

【洛谷】AT_abc371_e [ABC371E] I Hate Sigma Problems 的题解 洛谷传送门 AT传送门 题解 I Hate Sigma Problems!!! 意思很简单就是求序列中每一个子区间内含有不同数字的个数之和。 暴力的话时间复杂度是 O ( n 2 ) O(n ^ 2) O(n2)&#xff0c;是肯定不行的&#xff0…...

【Go】Go 环境下载与安装教程(Windows系统)

引言 Go&#xff0c;也被称为Golang&#xff0c;是一种静态类型&#xff0c;编译型的编程语言&#xff0c;由Google设计和开发。Go语言的设计目标是“解决软件开发中的一些问题”&#xff0c;特别是在大规模软件系统的构建和维护方面。 下载安装包 打开官网下载页面&#xff…...

毕业设计选题:基于springboot+vue+uniapp的驾校报名小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…...

网页通知设计灵感:CSS 和 JS 的 8 大创意实现

文章目录 前言正文1.霓虹灯风格的通知系统2.垂直时间轴通知3.动画徽章通知4.项目式通知5.多种状态通知&#xff1a;成功、错误、警告6.信息、警告、提示组件7.扁平化风格通知8.社交媒体风格弹出通知 总结 前言 网页通知如今已成为电商、社交平台等网站的常见功能&#xff0c;它…...

计算机毕业设计之:基于微信小程序的中药材科普系统(源码+文档+讲解)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

C++速通LeetCode中等第6题-找到字符串中所有字母异位词(滑动窗口最详细代码注释)

滑动窗口法&#xff1a; class Solution { public:vector<int> findAnagrams(string s, string p) {unordered_map<char,int> need,window;for(char c : p) need[c];int left 0,right 0;int valid 0;vector<int> res;//窗口数据更新while(right < s.s…...

Tcping:一款实用的端口存活检测工具

简介 tcping 是一个基于TCP协议的网络诊断工具,通过发送 TCP SYN/ACK包来检测目标主机的端口状态。 官网:tcping.exe - ping over a tcp connection 优点: (1)监听服务器端口状态:tcping 可以检测指定端口的状态,默认是80端口,也可以指定其他端口。 (2)显示ping返…...

【每日刷题】Day130

【每日刷题】Day130 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09; 2. 94. 二叉树的中序遍历 - 力扣…...

书生·浦语作业集合

目录&#xff1a; 1. Linux基础知识 2.python基础知识 3.Git基础知识 4.书生大模型全链路开源体系 1.1-Linux基础知识 配置环境后&#xff0c;运行 hello_word.py 在本地终端中进行端口映射 映射成功后&#xff0c;访问 127.0.0.1&#xff1a;7860 1.2-python基础知识 任务…...

得物App科技创新“再上一层楼”,荣获国家级奖项

近日&#xff0c;在2024中国国际服务贸易交易会&#xff08;简称“服贸会”&#xff09;上&#xff0c;得物App荣获“科技创新服务示范案例”奖项。这是国家层面对得物App以科技创新保障品质消费、提升消费体验成效的肯定。 在得物App上&#xff0c;90后、95后这些曾经的“新生…...

C#软键盘设计字母数字按键处理相关事件函数

应用场景&#xff1a;便携式设备和检测设备等小型设备经常使用触摸屏来代替键盘鼠标的使用&#xff0c;因此在查询和输入界面的文本或者数字输入控件中使用软件盘来代替真正键盘的输入。 软键盘界面&#xff1a;软键盘界面实质上就是一个普通的窗体上面摆放了很多图片按钮&…...

C++笔记---set和map

1. 序列式容器与关联式容器 前面我们已经接触过STL中的部分容器如&#xff1a;string、vector、list、deque、array、forward_list等&#xff0c;这些容器统称为序列式容器&#xff0c;因为逻辑结构为线性序列的数据结构&#xff0c;两个位置存储的值之间一般没有紧密的关联关…...

HTTP 教程

HTTP/HTTPS 简介 HTTP&#xff08;Hypertext Transfer Protocol&#xff0c;超文本传输协议&#xff09;和 HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff0c;超文本传输安全协议&#xff09;是用于在网络中传输信息的两种主要协议。它们定义了客户端和服务器…...

低代码革命:加速云原生时代的端到端产品创新

随着云计算技术的飞速发展&#xff0c;云原生成为了企业数字化转型的重要方向。云原生技术通过容器化、微服务、持续集成/持续部署&#xff08;CI/CD&#xff09;等实践&#xff0c;帮助企业构建和运行可扩展的应用程序。然而&#xff0c;云原生技术的复杂性也给开发团队带来了…...

力扣 92.反转链表Ⅱ

力扣《反转链表》系列文章目录 刷题次序&#xff0c;由易到难&#xff0c;一次刷通&#xff01;&#xff01;&#xff01; 题目题解206. 反转链表反转链表的全部 题解192. 反转链表 II反转链表的指定段24. 两两交换链表中的节点两个一组反转链表 题解225. K 个一组翻转链表K …...

2024年最新版TypeScript学习笔记——泛型、接口、枚举、自定义类型等知识点

今天带来的是来自尚硅谷禹神2024年8月最新的TS课程的学习笔记&#xff0c;不得不说禹神讲的是真的超级棒&#xff01; 文章目录 TS入门JS中的困扰静态类型检查编译TS命令行编译自动化编译 类型检查变量和函数类型检查字面量类型检查 类型推断类型声明声明对象类型声明函数类型…...

java项目之城镇保障性住房管理系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的城镇保障性住房管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 城镇保障性住房管…...