HDU1042(高精度模拟乘法)
方法一超时:
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
const int maxx=1e4+10;
char s1[maxx],s2[maxx];
int a[maxx],b[maxx];
int c[maxx];
int n;
int main(){while(cin>>n){a[1]=1%10;a[2]=1/10;b[1]=1%10;b[2]=1/10;int m=0;if(n==0){cout<<1<<endl;continue;}for(int i=1;i<=2;i++){for(int j=1;j<=2;j++){c[i+j-1]+=a[i]*b[j];c[i+j]+=c[i+j-1]/10;c[i+j-1]=c[i+j-1]%10;}}int len=n+m;while(c[len]==0&&len>0)len--;memset(a,0,sizeof(a));for(int i=len;i>0;i--){a[i]=c[i];}memset(b,0,sizeof(b));memset(c,0,sizeof(c));for(int i=2;i<=n;i++){m=log10(i)+1;int t=i;int j=0;while(j<m){b[++j]=t%10;t/=10;}for(int k=1;k<=j;k++){for(int z=1;z<=len;z++){c[k+z-1]+=b[k]*a[z];c[k+z]+=c[k+z-1]/10;c[z+k-1]=c[k+z-1]%10;}}len=len+j;while(c[len]==0&&len>0)len--;memset(a,0,sizeof(a));memset(b,0,sizeof(b));for(int k=len;k>0;k--){a[k]=c[k];}memset(c,0,sizeof(c));} for(int i=len;i>0;i--){cout<<a[i];}cout<<endl;}return 0;
}
方法二:四位进一次位,以前从数组一个单元存一个数位,现在存四个数位:
#include<algorithm>
#include<cmath>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxx=1e5+10;
int a[maxx];
int main(){int n;while(cin>>n){memset(a,0,sizeof(a));if(n==0){cout<<1<<endl;continue;}int temp;a[0]=1;int k=0;for(int i=1;i<=n;i++){int v=0;for(int j=0;j<=k;j++){int temp;temp=a[j]*i+v;a[j]=temp%10000;v=temp/10000;}if(v!=0){a[++k]=v;}}cout<<a[k];for(int i=k-1;i>=0;i--)printf("%04d",a[i]);cout<<endl;}return 0;
}
HDU1042(高精度模拟乘法)相关推荐
- 定时器精度对性能的影响_Comet CAA-500天线分析仪 | 高精度模拟十字针同时显示SWR和阻抗...
Comet CAA-500 MK2天线分析仪 高精度模拟十字针同时显示SWR和阻抗. 全彩色TFT LCD显示屏提供图形和数字SWR以及R和X值的总阻抗. 特征: 自动扫描模式 在LCD显示屏上自动绘 ...
- 力扣题解:43. 字符串相乘:模拟“乘法竖式”
题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2", ...
- 手动选择显示_【新品推介】Comet CAA500 MK2天线分析仪 | 高精度模拟十字针同时显示SWR和阻抗...
Comet CAA-500 MK2天线分析仪 高精度模拟十字针同时显示SWR和阻抗. 全彩色TFT LCD显示屏提供图形和数字SWR以及R和X值的总阻抗. 特征: 自动扫描模式 在LCD显示屏上自动绘 ...
- 位运算模拟乘法,模指数运算
1. 整数乘法(位运算) 使用位运算模拟乘法,其遵照以下的数学原理,即: ab=a(b020+b121+⋅⋅⋅+bn−12n−1)=a(b020)+a(b121)+⋅⋅⋅+a(bn−12n−1)ab= ...
- 高精度数乘法进位c语言,C语言中的高精度乘法
大一新生初谈C语言中的高精度乘法 1.为什么需要高精度乘法及其实质 我们知道,计算机内部直接用int或double等数据类型储存数字是有范围限制的,即当数据运算大小过大后,计算机将会出现溢出情况,使得 ...
- 威佐夫博弈matlab,51nod1185 威佐夫游戏 V2 (模拟乘法)
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取.拿到最后1颗石子的 ...
- HDU-1042 N! 大数乘法 (C语言)
这是一道简单的数学题,求一个数(N)的阶乘.但是问题是题中N给的非常大(0<=N<=10000),用for循环来做显然不行了.这里用数组来对付这些大家伙.基本思路如下: 1.开辟一个够大的 ...
- leetcode43(字符串相乘:模拟乘法竖式计算)
题目:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 输入: num1 = "123", num2 ...
- poj2602(高精度模拟加法)
高精度加法:这道题是把数字竖着写,还是两个大数相加,稍不注意就超时了,但是前导零这次是要保留的. #include<iostream> #include<algorithm> ...
最新文章
- CentOS6.4安装nginx1.4
- IIS 8.5配置.net网站[花了半个多小时]
- debian 8 mysql_在Debian 8系统安装 nginx + php + mysql(MariaDB) 基本Web环境
- app开发历程————Android程序解析服务器端的JSON格式数据,显示在界面上
- channelinactive触发后不关闭channel_go那些事儿|channel使用及其实现原理
- 前端学习(2470):echart复习电商管理通过erchart基本使用
- Standard C Episode 8
- JMS学习八(ActiveMQ消息持久化)
- 蚂蚁集团技术专家山丘:性能优化的常见模式及趋势
- ps右键不显示编辑选项_0基础小白能上手的AE动态插画教程你还不知道么?
- 面试题 05.08. 绘制直线【位运算】
- [转]Android ANR 分析解决方法
- javascript中常用的对象创建方式有哪些?
- 虚拟机安装教程win10_Win10封装教程1-VM虚拟机安装及配置
- 2019年美赛建模总结与e题思路
- ADS入门,使用ADS创建和仿真一个简单的线路
- 杭州互联网公司和生活成本
- opencv立方体的画法_opencv几何图形画法
- 出生率新低!1978-2020中国人口出生率、死亡率及自然增长率变迁
- 数学----两个或者多个函数相乘求它们的导数