大数(小于10000)N的阶乘准确值(效率)
51Nod - 1057
对结果进行切分,切分的宽度可以是 4、5 ,6,7,8.。
把结果存入 a[100000]; 这个数组中 ,假设每个元素存的是结果的5位,那么这个数组就能存 500000 位的数,绝对足够大。
比如 10 != 3628800.。
那么在数组 a [] 的储存情况是 a [ 0 ] = 28800,,a [ 1 ] = 36..
再比如 一个数是 1 0 9 8 7 6 5 4 3 2 1 .。它的储存情况是。。a [ 0 ] = 54321 ,a [ 1 ] = 09876 , a[ 2 ] = 1....
运算的时候就像大数相乘,每个元素都要乘,如果这个元素超过了 5 位,就进位,加到下一个元素上,
以此类推。。
最后从后往前输出数组。
要注意的是,如果 分割的宽度是 5 ,除了数组最后的元素不确定是不是 5 位, 其它的输出都要 “%05d”。。!!
#include <cstdio>
#include <algorithm>
#include <iostream>using namespace std;int a[100000]={1,0};
int n,i,c,len,j;int main()
{scanf("%d",&n);len = 1; // len 是用来记录 a 中有几个元素。 for (i = 2;i <= n; ++ i){c = 0; // c 是 进位的 数for (j = 0;j < len;++ j){a[j] = (a[j] * i + c ); // 注意每次乘都要 +c(加上 上次进位的数)c = a[j]/100000; //如果运算结果小于 5 位,c 是为 0的。a[j] %= 100000; // 保证每个元素存5 位数}if(c > 0) // 经过个循环,如果 c > 0 了,就说明超过了5位,要进位{a[j] = c; // a 新增个元素存进位的数++len; // 那么就需要 len ++,记录元素的个数。。}}printf("%d",a[--len]); // 先输入最高的几位,不确定有多少,也不用管。while(len)printf("%05d", a[--len]); // 后面的都是 5 位,注意格式。printf("\n");return 0;
}
大数(小于10000)N的阶乘准确值(效率)相关推荐
- Java黑皮书课后题第6章:6.10(使用isPrime方法)程序清单6-7提供了测试某个数字是否是素数的方法isPrime(int number)。使用这个方法求小于10000的素数的个数
6.10(使用isPrime方法)程序清单6-7提供了测试某个数字是否是素数的方法isPrime(int number).使用这个方法求小于10000的素数的个数 题目 题目描述 程序清单6-7代码 ...
- C语言----- 4/π=1-1/3+1/5-1/7+...,编程计算π的近似值,直到最后一项的值小于10-4次方为止 //输出π的值,并统计累加的项数
代码如下: //利用 4/π=1-1/3+1/5-1/7+...,编程计算π的近似值,直到最后一项的值小于10-4次方为止 //输出π的值,并统计累加的项数 #include<stdio.h&g ...
- 7-100 简单求阶乘问题 (10 分)本题要求编写程序,计算N的阶乘。输入格式:输入在一行中给出一个不超过12的正整数N。输出格式:在一行中输出阶乘的值。输入样例:4结尾无空行
7-100 简单求阶乘问题 (10 分) 本题要求编写程序,计算N的阶乘. 输入格式: 输入在一行中给出一个不超过12的正整数N. 输出格式: 在一行中输出阶乘的值. 样例">输入样例 ...
- C语言 1的平方加2的平方加3的平方一直加到n的平方小于10000的n的最大值
求满足1的平方+2的平方+3的平方+···+n的平方<10000的n的最大值 因本人才疏学浅,见识浅薄,有不当之处望指正,谢谢! #include <stdio.h> void ma ...
- 给定的正整数N,求方程X^2+y^2=N的全部正整数解。N小于10000.
**//给定的正整数N,求方程X^2+y^2=N的全部正整数解.N小于10000.** #include<stdio.h> int main(){int n;scanf("%d& ...
- Java中使用递归计算1~N阶乘的值
Java中使用递归计算1~N阶乘的值 public class test {// 求阶乘的方法public static int factorial (int m) {if (m == 1) {// ...
- 大数问题--超大数(10000以内)的阶乘
问题分析:很容易发现,由于N的范围很大,一般简单的阶乘算法肯定会溢出,因为当20!已经接近long long的上限了. 所以得用大数问题的解法,就是模拟运算: 下面基于上面的思想,给出此题的两种代码实 ...
- 求10000里的阶乘C语言,最详细的注释,看不懂你来打我
描述 求10000以内n的阶乘. 格式 输入格式 只有一行输入,整数n(0≤n≤10000). 输出格式 一行,即n!的值. 样例 输入样例 4 输出样例 24 代码 #include<stdi ...
- 【Java】计算当n=9时n!的值,并分别输出1!到9!各阶乘的值
阶乘的公式是什么 n!=1×2×3×...×n.阶乘亦bai可以递归方式定义du:0!=1,n!=(n-1)!×n. 亦即zhin!=1×2×3×...×n.阶乘亦可以递dao归方式定义:0!=1,n ...
- 娱乐篇~最近挺火的520遍我爱你源码和利用大数计算1~50的阶乘
首先有了520遍我爱你的代码源码男同胞就不用花数小时打字来感动你们的女神了,嘿嘿. #define _CRT_SECURE_NO_WARINGS 1 #include<stdio.h> i ...
最新文章
- 8个好用到爆的Python实用技巧,至少不用吃亏半年
- 【物联网智能网关-14】Html5:Canvas+WebSocket实现远程实时通信(下)
- Exchange工具11—性能监视器
- 吴恩达深度学习笔记2.2 logistic回归
- em算法详细例子及推导_EM算法详解(例子+推导)
- 设置window代理的命令
- Java Lambda 表达式(又名闭包 (Closure)/ 匿名函数 ) 笔记
- 被忽视的ArrayList,你知道多少
- .NET 5 尝鲜 - 开源项目TerminalMACS WPF管理端支持.NET 5
- 前端学习(1946)vue之电商管理系统电商系统之初步使用vue-table-with-tree
- C++:11---友元函数、友元类
- 用 Python 语言来写游戏
- mongodb 索引详解
- 创建路径_PS钢笔工具是建立路径的基本工具
- X11/extensions/XTest.h:没有那个文件或目录
- sparql查询mysql_SPARQL常用查询
- spring Boot 学习(一、Spring Boot与缓存)
- jquery serialize 和 console 漫谈
- cssmatic gradient css generator,10 Best CSS Gradient Generators
- 学术答辩PPT模板推荐
热门文章
- 西南科技大学OJ题 单链表中信息的分类1039
- UWA学堂|逻辑代码模块
- “野火FreeRTOS教程”第7章补充知识点-异常流程
- python web开发实战pdf 百度网盘_python web开发实战 pdf
- 10.可视化、可视分析、探索式数据分析
- 两块stm32仿真protues串口通信程序
- 人口各省预测模型matlab_流体力学/医学学科交叉:感染人口预测模型
- 小白能读懂的 《手把手教你学DSP(TMS320X281X)》第四章(2) gel文件
- 通过TMS320F28335学习DSP的开发流程——28335的基础知识(1)
- 杜比服务器系统安装教程,win10杜比音效如何安装?win10安装杜比音效的详细教程...