UVA 623 - 500!

 

In these days you can more and more often happen to see programs which perform some useful calculations being executed rather then trivial screen savers. Some of them check the system message queue and in case of finding it empty (for examples somebody is editing a file and stays idle for some time) execute its own algorithm.

As an examples we can give programs which calculate primary numbers.

 


One can also imagine a program which calculates a factorial of given numbers. In this case it is the time complexity of orderO(n) which makes troubles, but the memory requirements. Considering the fact that 500! gives 1135-digit number no standard, neither integer nor floating, data type is applicable here.

 


Your task is to write a programs which calculates a factorial of a given number.

Assumptions:Value of a number ``n" which factorial should be calculated of does not exceed 1000 (although 500! is the name of the problem, 500! is a small limit).

 

Input

Any number of lines, each containing value ``n" for which you should provide value ofn!

 

Output

2 lines for each input case. First should contain value ``n" followed by character `!'. The second should contain calculated valuen!.

 

Sample Input

 

10
30
50
100

 

Sample Output

10!
3628800
30!
265252859812191058636308480000000
50!
30414093201713378043612608166064768844377641568960512000000000000
100!
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

 

 

模拟乘法,预先计算好所有阶乘

 

 

#define RUN
#ifdef RUN

#include<stdio.h>
#include<string.h>
const int maxn = 3000;
int f[1000][maxn];
int tmp[maxn];


void printout(){
	for(int i=0; i<1000; i++){
		for(int j=0; j<maxn; j++){
			printf("%d", f[i][j]);
		}
		printf("\n");
	}
}

void init(){
	memset(f, 0, sizeof(f));
	memset(tmp, 0, sizeof(tmp));

	f[0][0] = 1;
	tmp[0] = 1;
	int i;
	for(i = 2; i <= 1000; i++) {
		int c = 0;
		for(int j = 0; j < maxn; j++) {
			int s = tmp[j] * i + c;
			tmp[j] = s % 10;
			c = s / 10;
		}
		memcpy(f[i-1], tmp, sizeof(tmp));
	}

	//printout();
}


int main() {

#ifndef ONLINE_JUDGE
	freopen("623.in", "r", stdin);
	freopen("623.out", "w", stdout); 
#endif

	int i, j, n;
	init();
	
	while(scanf("%d", &n) == 1){

		printf("%d!\n", n);

		if(n == 0){
			printf("1");
		}
		else{
			for(j = maxn-1; j >= 0; j--) if(f[n-1][j]) break;
			for(i = j; i >= 0; i--) printf("%d", f[n-1][i]);
		}

		printf("\n");
	}

	
	return 0;
}


#endif



 

 

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx 科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。 立即下载

相关推荐

PotPlayer自用皮肤

自用 PotPlayer 皮肤,仅微调了字体大小与颜色,是按个人习惯调整,未做适配性调整。

UVA623-500!(模拟乘法 or BigInteger)

题目链接 In these days you can more and more often happen to see programs which perform some useful calculations being executed rather then trivial screen savers. Some of them check the system message qu...

QAQ 249

2-shell及常用命令-续.pdf

2-shell及常用命令-续.pdf

UVa623:500!

UVa623:500! 题目大意 简单粗暴,给定正整数n,计算 n! 并输出,这里n最大为1000。 Solution1(naive) 因为阶乘的数值会非常大,所以需要大整数类的支持,一个简单粗暴的想法是利用java中的BigInteger类,这个类已经实现了大整数的所有操作。这种做法很简单直接,但运行速度会稍慢。 AC-Code(Java) Time:450ms import java....

weixin_30614587的博客 138

DataEaseV2.9 本地开发环境搭建与调试指南

本文详细指导如何搭建DataEase V2.9的本地开发环境,涵盖从软件准备、源码获取、数据库初始化到在IDEA中配置、编译和调试的全过程。重点解决了本地运行环境的关键配置与常见问题,帮助开发者高效开启DataEase的定制化开发与二次开发。

weixin_29290863的博客 141

双目相机立体匹配算法概述(含Python代码)

立体匹配任务是计算机视觉中的一个重要问题,旨在从一对具有相同场景的图像中估计每个像素的视差(disparity)。本文对现有的传统算法和深度学习算法进行了综述,以便于各位选择合适的立体匹配算法用于深度估计或三维建模。

m0_59257547的博客 8291

UVa 623 500!

本文介绍了如何计算大整数阶乘的高精度算法。由于内置数据类型无法存储如1000!这样的大数,需采用高精度计算方法。文章提出使用万进制(基数为10000)的大整数实现,通过数组存储数位,每组四位十进制数。解题思路包括:设计支持大整数运算的类,预计算0!到1000!的阶乘并存储,最后直接查询输出。该方法的时间复杂度约为O(2.5×10^6)次操作,空间复杂度约2.5MB,能够高效处理输入规模。

寂静山林 285

Autodesk全家桶:从AutoCAD到Maya,设计师必备的7款神器全解析

本文全面解析Autodesk全家桶中的7款设计师必备软件,包括AutoCAD、Revit、Inventor、Fusion 360、Maya和3ds Max等。从二维制图到三维建模,从建筑信息模型(BIM)到影视动画制作,这些工具在工程设计、建筑可视化和数字创意领域展现出强大的协同效应。通过实战案例展示如何整合工作流,显著提升设计效率与项目质量。

weixin_29237635的博客 460

UVa 623 - 500!

题目:大整数阶乘计算。 分析:简单题、模拟。大数计算,可以采用位数压缩,节约时间空间。把k位存入一位,每次10^k进位即可,利用%0kd输出很方便。 注意:500!有2632位,位数开少会WA。 #include #include #include int ans[ 451 ]; int main() { int N; while ( scanf("%d",&N) != E

小白菜又菜 1108

信号系统核心概念:卷积、傅里叶变换与抽样定理的工程实践指南

信号与系统是理解现代电子、通信与数字处理技术的基石。其核心在于通过数学工具对物理世界进行建模与分析,其中卷积运算揭示了线性时不变系统对任意输入的响应可分解为冲激响应的叠加,这一原理极大提升了系统测试与分析的效率。而傅里叶变换则提供了从时域到频域的映射,将复杂的时域卷积运算转化为频域的简单乘法,是实现频谱分析、滤波设计的关键。抽样定理则架起了模拟与数字世界的桥梁,明确了无失真数字化的条件。这些基础理论共同构成了滤波器设计、音频处理、图像分析及通信系统等广泛工程应用的技术支柱。本文聚焦于卷积与傅里叶变换,结合冲

weixin_30788619的博客 629

Ubuntu虚拟机磁盘扩容实战:5分钟搞定gparted分区调整(附常见错误修复)

本文详细介绍了在Ubuntu虚拟机中使用gparted工具进行磁盘扩容的实战步骤。针对常见的交换分区阻碍问题,提供了从禁用交换空间、删除旧分区、调整主分区大小到重建交换分区并更新系统配置的完整解决方案,帮助用户在5-10分钟内安全高效地解决磁盘空间不足的难题。

1a2s3d4f5g的博客 670

uva 623 - 500!

求阶乘。 最多1000; 必须先把每个阶乘用字符串存好,要不然会超时。。 用高精度乘法从一开始算出每个值。然后询问直接输出 #include #include #include using namespace std; const int MAXN=3000; const int M=1000+10; string sol[M]; char fact[MAXN]; int len; voi

catfish的专栏 1342

OpenClaw 子代理配对失败问题分析与解决方案

OpenClaw子代理配对失败问题分析与解决方案 问题核心在于agent设备权限不足,仅有operator.approvals权限而缺少operator.admin权限,导致子代理启动时形成权限死锁。本文提供三种解决方案: 直接编辑设备配对文件(推荐):修改本地JSON文件,为agent设备添加完整operator.admin权限,操作简单快捷。 标准重新配对流程:删除现有agent设备后重新配对,通过正常审批流程获取完整权限,符合系统安全设计。 修改源码降低权限要求(仅限开发环境):调整子代理代码避免强制

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 148

UVa 623 500! (高精度阶乘)

623 - 500! Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=564 In these days you can more and more often hap

AC,∑ndless 1264

基于STM32的智能手环心率血氧体温监测系统(完整设计)

本文设计了一款基于STM32单片机的多功能智能手环系统,集成心率、血氧、体温实时监测功能,并支持运动数据管理与健康预警。系统采用MAX30102传感器实现心率血氧监测,DS18B20检测体温,ADXL345进行步数统计,通过OLED屏幕显示数据。研究通过低功耗硬件选型与模块化软件架构设计,实现了多参数同步采集、阈值预警及蓝牙数据传输功能。测试结果表明,系统在健康监测精度、续航能力及用户交互体验上均达到预期目标,为个人健康管理提供了实用解决方案。

3254968421的博客 701

把 ABAP ALV 做成可点、可改、可保存:Interactive Editable ALV Grid 的一套落地打法

文章摘要(148字): SAP ALV报表开发中,交互式可编辑网格的实用方案需解决三个核心问题:数据展示、交互下钻与编辑保存。本文以SCARR航空公司和SFLIGHT航班数据为例,演示如何实现双击主列表下钻明细、动态切换编辑模式、精确保存修改的技术路线。关键点包括:通过PF-STATUS添加业务按钮、使用CHECK_CHANGED_DATA同步前端修改、保护关键字段避免误操作,以及变更数据的审计跟踪方法。该方案适用于SAP GUI环境下的快速业务调整需求,相比Fiori开发具有更高的实施效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 228

UVA623 500!【百万进制/10^15进制】

In these days you can more and more often happen to see programs which perform some useful calculations being executed rather then trivial screen savers. Some of them check the system message queue an...

海岛Blog 756

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

[Uva623]500!(高精)

Description 求N! \(N \leq 1000\) Sample Input 10 30 50 100 Sample Output 10! 3628800 30! 265252859812191058636308480000000 50! 30414093201713378043612608166064768844377641568960512000000000000 100! 933...

weixin_34194317的博客 141

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

UVa OJ 623 阶乘

UVa OJ 623  lem C

黄金之心 626

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

《算法竞赛入门经典》中例题对应题目

目前只找到一部分uva上的题目,其它的应该是没有了,或者我还没找到... 注:带有“类似”标记的题目表明为类似的题目,可能与例题有些出入,但不是很大,用的是同样的方法。 第五章: 5.1.1 WERTYU UVa10082 - WERTYU 5.1.2 TEX括号 UVa272 - TEX Quotes 5.1.3 周期串 UVa455...

weixin_34265814的博客 165

π-Algorithmist分类题目(3)

原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Pageπ-Algorithmist分类题目(3)Probability TheoryUVA 10288 CouponsUVA 10491 Cows and CarsUVA 10900 So you want to be a 2n-aire?Numerical MethodUV...

海岛Blog 933

一些蒟蒻认为的好题(趣题)【更新中】

Question 1来源:uva1657Description很久很久以前有鬼谷先生,他有两位弟子,一位叫孙膑,另一位叫庞涓,一天鬼谷子想考一考他的两个徒弟,他在心中想了两个正整数,我们用x和y代替,其中1≤x<y≤n1 \le x \lt y \le n,然后鬼谷先生公布了这个n,接着它将两个数的和告诉了孙膑,将两个数的积告诉了庞涓,然后依次循环询问孙膑庞涓两人是否知道这两个数是多少,(总是先问孙

gankinghand的博客 538
上一篇: UVA 264 - Count on Cantor
下一篇: UVA 623 - 500!
chiiis
博客等级 码龄14年 422粉丝 429原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值