10000!

#include<stdio.h>
int main()
{
	int result[40000];//保存计算结果的数组
	int height = 1;//当前的结果是几位数,默认一开始为一位数
	 int num;//要计算的阶乘
	 scanf("%d", &num);
	 result[0] = 1;
 
	 for (int i = 1; i <= num; i++)
	 {
		 int res = 0;//进位
		 for (int j = 0; j < height; j++)
		 {
			 int temp = result[j] * i + res;
			 result[j] = temp % 10;
			 res =temp / 10;
		 }
		 while (res)
		 {
			 result[height++] = res % 10;
			 res /= 10;
		 }
	 }
 
	 for (int i = height - 1; i >= 0; i--)
	 {
		 printf("%d", result[i]);
	 }
	 return 0;
}

即使long long也不够,故想到用数组来存放结果的每一位

4!=24

5!=4!*5=24*5=20*5+4*5利用这个原理

④ 模拟C/S通信,要求如下: a.模拟客户端(Client端)程序client,其功能是: 1.显示下列服务功能菜单: ************************** * 1:Query balance * * 2:Draw money * * 3:Save money * * 4:Change password * * 0:Exit * ************************* * 2.接收用户键入的功能号选择; 3.将用户键入的功能号作为一条信息发送到消息队列,然后结束。 b.模拟服务器端(Server端)程序server,其功能是: 1.从消息队列接收Client端发来的一条消息; 2.父进程创建一个子进程; 3.根据消息作如下处理: 若消息为"1",子进程1加载服务模块query,该模块的内容为显示以下信息:You have $10000! 若消息为"2",子进程1加载服务模块draw,该模块的内容为显示以下信息:You have drawn $10000! 若消息为"3",子进程1加载服务模块save,该模块的内容为显示以下信息:You have saved $10000! 若消息为"4",子进程1加载服务模块change,该模块的内容为显示以下信息:Your password has changed! 若消息为"0",退出子进程。 4.等待子进程终止后,Server进程删除消息缓冲队列,然后结束。 注意: I).各个子模块query、draw、save和change要事先编译连接好,放在你认为合适的子目录下; II).采用先运行客户端进程,然后运行服务器端进程的方式实现同步; III).注意子进程的加载方法 在linux系统下,根据要求给出代码要求
05-27

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值