N!

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 84139    Accepted Submission(s): 24802

Problem Description
Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!
 
Input
One N in one line, process to the end of file.
 
Output
For each N, output N! in one line.
 
Sample Input
1 2 3
 
Sample Output
1 2 6
 
Author
JGShining(极光炫影)
题解:看注释吧,我妈叫我吃饭了
AC代码:
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <cstdlib>
using namespace std;char a[100005], result[100005];//是动态数组,a和result用于互传
int b;//单纯一个数字int m[100005], p[100005];//m是把a从字符串转成数字用于计算
//————————————————————其实可以把m和p合并缩短代码这俩都是中间计算用的
//字符型a>>>>m>>>>p>>>>result>>>a>>>循环
// 大数乘小数
// 大数a乘以小数b,结果返回给result
void b_s(char a[], int b, char result[])
{// 初始化memset(m, 0, sizeof(m));memset(p, 0, sizeof(p));int len = strlen(a);//每次计算一遍计算a的长度for(int i=0; i<len; ++i)// 把a逆序赋给m整形数组m[i] = a[len-i-1]-'0';for(int i=0; i<len; ++i)// 逐位相乘结果存入int型p中p[i] = m[i]*b;for(int i=0; i<len; ++i)// 对p处理,满十进一
    {if(p[i]>=10){p[i+1] += p[i]/10;p[i] = p[i]%10;}}while(p[len])//单独判断要是p的最后一位大于十,进位
    {if(p[len]>=10){p[len+1] += p[len]/10;p[len] = p[len]%10;}len++;}for(int i=0; i<len; ++i)//还原成字符串到result方便输出result[i] = p[len-i-1]+'0';//把aresult[len] = 0;//结束
}int main()
{int n;while(cin >> n){if(n == 0 || n == 1)//特例+开头
        {cout << 1 << endl;continue;}memset(a, 0, sizeof(a));memset(result, 0, sizeof(result));a[0] = '1';//初始化开头for(int i=2; i<=n; ++i){b_s(a, i, result);strcpy(a, result);//字符串中的函数把result复制到a里
        }for(int i=0; i<strlen(result); ++i)//这里会有一条警告,但是没关系//warning: comparison between signed and unsigned integer expressions [-Wsign-compare]printf("%c", result[i]);printf("\n");}return 0;
}

今天也是元气满满的一天!good luck!

转载于:https://www.cnblogs.com/cattree/p/7514187.html

N! hdu 1042相关推荐

  1. hdu 1042 N! 高精度运算

    N!                                                                              Time Limit: 10000/50 ...

  2. hdu 1042 N!(大数)

    题意:求n!(0 ≤ N ≤ 10000) 思路:大数,用数组存储 1.首先要考虑数据N!的位数,因为最大是10000!,可以计算一下大概是5+9000*4+900*3+90*2+10*1=38865 ...

  3. HDU 1042 N!

    典型的大数问题. 分析来自:http://www.cnblogs.com/Su-Blog/archive/2012/08/27/2659172.html 高精度问题:大整数乘法的应用 其核心思想就是把 ...

  4. HDU 1042 N!(高精度计算阶乘)

    N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  5. HDU 1042 N!(高精度阶乘、大数乘法)

    N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Subm ...

  6. *【HDU - 1042 】 N! (大数乘法)

    题干: Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input One N in one line, process ...

  7. HDU 1042 N!( 高精度乘法水 )

    链接:传送门 思路:高精度乘法板子题,高精度耗时又耗空间...... /**************************************************************** ...

  8. HDU 1042 N!(大数阶乘)

    本题看着为大数的模板题目,挺简单的. 下面是模仿某位大神的代码 #include<stdio.h> void main() {int i,j,m,n;while(scanf("% ...

  9. (部分转载,部分原创)java大数类(2)

    NYOJ 773  开方数 http://acm.nyist.net/JudgeOnline/problem.php?pid=773 1 import java.util.Scanner; 2 3 p ...

最新文章

  1. python进程间通信 listener_python进程间通信之Queue
  2. 网鼎杯SQLI+反序列化读取文件题解
  3. float浮动的学习
  4. 单元测试unittest(基于数据驱动的框架:unittest+HTMLTestRunner/BeautifulReport+yaml+ddt)...
  5. Android RotateAnimation详解
  6. XML入门经典(第五版)
  7. vnc viewer通过浏览器_浏览器中的Ubuntu 20.04 LTS(Focal Fossa)
  8. 关于通过反汇编查看dll的方法【转】(
  9. Telegraf安装及使用
  10. python是谁维护的_Python是维护拆分的更可靠的方法
  11. python实现8大排序算法
  12. Elasticsearch 7.7.0 基本操作-基于 CMD 命令行
  13. Android创建并响应选项菜单
  14. 望眼科技:另类资产管理数据--夜光数据
  15. 计算机的k代表什么意思,电脑CPU后缀K、U、HQ、M分别代表什么你清楚吗?
  16. mongodb for mac安装
  17. android 友盟统计功能,Android应用中添加友盟统计
  18. Android 版本对应 Version Code
  19. 冒泡php_PHP实现冒泡排序
  20. 微信小程序 MinUI 组件库系列之 progress 进度条组件

热门文章

  1. 【软件】Chrome收藏夹本地位置
  2. POE供电 网线 电源 网络情况图
  3. 数据之美(九):50个精美绝伦的 Infographics(上)
  4. Redis(二)——复制
  5. 杨立昆怒怼机器人索菲娅:AI硬加人类意识是揠苗助长
  6. 计算机硬盘能达到5g的速度,5G网络速度达到1G,但硬盘读写速度才几十兆,怎么办...
  7. SpringCloudGateway爆漏洞,快看看你的服务中招没?
  8. 1.计算机指令系统,深入学习计算机指令系统唐书
  9. php 属猪,属猪人的流年运程
  10. 计算机网络专题讲座,我院举行《计算机网络新技术》专题讲座