计算n!

 #include<cstring>
#include<cstdio>
using namespace std;
int num[];
int main()
{
int n;
while(~scanf("%d",&n))
{
memset(num,,sizeof(num));
int len = ;
num[] = ;
for(int i = ; i <= n; i++){
for(int j = ; j <= len; j++){
num[j] = num[j]*i;
}
for(int j = ; j <= len; j++){
if(num[j]>) {
num[j+] += num[j]/;
num[j] = num[j]%;
}
if(num[len+]!=) len++;
}
}
for(int i = len; i >= ; i--) printf("%c",num[i]+'');
puts("");
}
return ;
}

用大数的模板也可以,不过每次要吧数字转化成字符串,其实还是自己写比较简单,处理一个简单的进位就可以了

下面是板子:

 void mult(char* A,char* B,char* ans)
{
int a[size+]= {};
int b[size+]= {};
int pa=,pb=;
int c[*size+]= {}; int lena=strlen(A);
int lenb=strlen(B); for(int i=lena-; i>=; i--)
a[pa++]=A[i]-'';
for(int j=lenb-; j>=; j--)
b[pb++]=B[j]-''; for(pb=; pb<lenb; pb++)
{
int w=; //低位到高位的进位
for(pa=; pa<=lena; pa++)
{
int temp=a[pa]*b[pb]+w;
w=temp/;
temp=(c[pa+pb]+=temp%);
c[pa+pb]=temp%;
w+=temp/;
}
}
bool flag=false;
bool sign=false; //标记ans是否为全0
for(pa=,pb=lena+lenb-; pb>=; pb--)
{
if(!flag && c[pb]==) //删除ans开头的0
continue;
else
flag=true; sign=true;
ans[pa++]=c[pb]+'';
}
if(sign)
ans[pa]='\0';
else
{
ans[]='';
ans[]='\0';
} return;
}
 string sum(string s1,string s2)  //大数加法
{
if(s1.length()<s2.length())
{
string temp=s1;
s1=s2;
s2=temp;
}
int i,j;
for(i=s1.length()-,j=s2.length()-;i>=;i--,j--)
{
s1[i]=char(s1[i]+(j>=?s2[j]-'':)); //注意细节
if(s1[i]-''>=)
{
s1[i]=char((s1[i]-'')%+'');
if(i) s1[i-]++;
else s1=''+s1;
}
}
return s1;
} string Mult(string s,int x) //大数乘以整形数
{
reverse(s.begin(),s.end());
int cmp=;
for(int i=;i<s.size();i++)
{
cmp=(s[i]-'')*x+cmp;
s[i]=(cmp%+'');
cmp/=;
}
while(cmp)
{
s+=(cmp%+'');
cmp/=;
}
reverse(s.begin(),s.end());
return s;
}
string Multfa(string x,string y) //大数乘法
{
string ans;
for(int i=y.size()-,j=;i>=;i--,j++)
{
string tmp=Mult(x,y[i]-'');
for(int k=;k<j;k++)
tmp+='';
ans=sum(ans,tmp);
}
return ans;
}

模板转自:http://blog.csdn.net/u012860063/article/details/36903491

hdu_1042(模拟大数乘法)的更多相关文章

  1. (A - 整数划分 HYSBZ - 1263)(数组模拟大数乘法)

    题目链接:https://cn.vjudge.net/problem/HYSBZ-1263 题目大意:中文题目 具体思路:先进了能的拆成3,如果当前剩下的是4,就先不减去3,直接乘4,如果还剩2的话, ...

  2. PAT 1023 Have Fun with Numbers[大数乘法][一般]

    1023 Have Fun with Numbers (20)(20 分) Notice that the number 123456789 is a 9-digit number consistin ...

  3. [POJ] #1001# Exponentiation : 大数乘法

    一. 题目 Exponentiation Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 156373   Accepted: ...

  4. 用分治法实现大数乘法,加法,减法(java实现)

    大数乘法即多项式乘法问题,求A(x)与B(x)的乘积C(x),朴素解法的复杂度O(n^2),基本思想是把多项式A(x)与B(x)写成 A(x)=a*x^m+b B(x)=c*x^m+d 其中a,b,c ...

  5. HDOJ-1042 N!(大数乘法)

    http://acm.hdu.edu.cn/showproblem.php?pid=1042 题意清晰..简单明了开门见山的大数乘法.. 10000的阶乘有35000多位 数组有36000够了 # i ...

  6. 51nod1057-N的阶乘(大数乘法巧解)

    这道大数乘法开始我是想套板子模拟的..然后就发现2/3的例子都wa了.(惊了).然后在思考后发现n2的板子的确过不了这么多的大数.(不看题的下场).所以,我在网上发现了分块求大数的方法.%%% 思路来 ...

  7. hdu1313 Round and Round We Go (大数乘法)

    Problem Description A cyclic number is an integer n digits in length which, when multiplied by any i ...

  8. 51nod 1027大数乘法

    题目链接:51nod 1027大数乘法 直接模板了. #include<cstdio> #include<cstring> using namespace std; ; ; ; ...

  9. 51 Nod 1027 大数乘法【Java大数乱搞】

    1027 大数乘法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出2个大整数A,B,计算A*B的结果. Input 第1行:大数A 第2行:大数B (A,B的长度  ...

随机推荐

  1. HTTP Live Streaming 直播(iOS直播) 初识

    HTTP Live Streaming(HLS)技术,并实现了一个HLS编码器HLSLiveEncoder,当然,C++写的.其功能是采集摄像头与麦克风,实时进行H.264视频编码和AAC音频编码,并 ...

  2. 'boost/iterator/iterator_adaptor.hpp' file not found之xcode生成时报错的解决方案

    xcode生成rn(0.49.3)项目的时候出现“'boost/iterator/iterator_adaptor.hpp' file not found之xcode”报错. 原因: /Users/x ...

  3. which 命令详解

    一.which 作用: which 命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录, which 命令会在环境变量$PATH 设置的目录里查找符合条件的文件.也 ...

  4. (一)DOM 常用操作 —— “查找”节点

    在 DOM 树中,如果想要操作一个节点,那么首先要"查找"到这个节点.查找节点的方法由 Document 接口定义,而该接口由 JavaScript 中的 document 对象实 ...

  5. Nodejs的运行原理-架构篇

    前言 本来是想只做一个Nodejs运行原理-科普篇,但是收到了不少私信,要我多分享一些更进阶,更详细的内容,所以我会在接下来的两个月里继续更新Nodejs运行原理. PS:此系列只做Nodejs的运行 ...

  6. Java自己动手写连接池二

    读取数据库文件,来操作: package com.kama.cn; import java.sql.Connection;import java.sql.DriverManager;import ja ...

  7. js、jQuery、layer实现弹出层的打开、关闭

    打开layer layer.open({ type: 2, title: '新增收货地址', shadeClose: true,//点击阴影关闭 shade: 0.8, area: ['900px', ...

  8. java构造器执行顺序一个有趣的简单实例

    一 Animal为父类,构造器中调用public(default.protected) say方法,Dog继承了Animal,并重载了say方法.新建Dog对象,查看运行结果,若将Animal中say ...

  9. Python random模块sample、randint、shuffle、choice随机函数概念和应用

    Python标准库中的random函数,可以生成随机浮点数.整数.字符串,甚至帮助你随机选择列表序 列中的一个元素,打乱一组数据等. random中的一些重要函数的用法: 1 ).random() 返 ...

  10. jQuery 选择器 (一)

    选择器 实例 选取 * $("*") 所有元素 #id $("#lastname") id="lastname" 的元素 .class $( ...