POJ2389 —— 高精度乘法
直接上代码了:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<queue>
#include<vector>
#include<map>
#include<string>
#include<set>
#define LL long long
#define MAX(a,b) (a>b?a:b)
#define MIN(a,b) (a<b?a:b) using namespace std; char s[50];
int a[50],b[50],c[100]; int main()
{
int lena = 0, lenb = 0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c)); gets(s);
for(int i = strlen(s)-1; i>=0; i--)
a[lena++] = s[i]-'0'; gets(s);
for(int i = strlen(s)-1; i>=0; i--)
b[lenb++] = s[i] - '0'; for(int i = 0; i<50; i++)
{
int last = 0;
for(int j = 0; j<50; j++)
{
c[i+j] += a[i]*b[j];
c[i+j] += last;
last = c[i+j]/10;
c[i+j] = c[i+j]%10;
}
} int t = 99;
while(!c[t]) t--;
while(t>=0) printf("%d",c[t--]);
putchar('\n'); return 0;
}
顺便附上高精度加法的函数:
//高精度加法
void highplus(char a[],char b[],char c[])//调用前必须memset
{//将a+b存到c中,直接输出,但c是字符型,要整形则简修改即可
char ch;
int la = strlen(a),lb = strlen(b);
for(int i = 0;i<=(la-1)/2;i++)//将a和b位数倒转,以便逐位相加;同时-‘0’转成整形
{
ch = a[i]-'0';
a[i] = a[la-1-i]-'0';
a[la-1-i] = ch;
}
for(int i = 0;i<=(lb-1)/2;i++)
{
ch = b[i]-'0';
b[i] = b[lb-1-i]-'0';
b[lb-1-i] = ch;
} for(int i = 0;i<100;i++)//这里的100根据调用函数而修改
{ //逐位计算,依照加法竖式
c[i] += b[i]+a[i];
c[i+1] += c[i]/10;
c[i] %= 10;
} int i = 99;//若精度不同记得修改
while(!c[i]) i--;//跳过无用的0;
for(int j = 0;j<=i/2;j++)//将c再换成字符型,并再倒叙,使其成为正常数
{ //记住要经过中间数,否则中间一个将没有转成字符型,所以用<=(len-1)/2
ch = c[j]+'0';
c[j] = c[i-j]+'0';
c[i-j] = ch;
}
}
POJ2389 —— 高精度乘法的更多相关文章
- [vijos P1040] 高精度乘法
如果这次noip没考好,完全是因为从7月29日之后就没有再写过程序了.说起来,真是一个泪流满面的事实… 那这样一个弱智题练手恢复代码能力,竟然还花了我两个晚上(当然不是两整个晚上…) 第一天TLE了, ...
- 【PKU1001】Exponentiation(高精度乘法)
Exponentiation Time Limit: 500MS Memory Limit: 10000K Total Submissions: 145642 Accepted: 35529 ...
- hdu 1042 N!(高精度乘法 + 缩进)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1042 题目大意:求n!, n 的上限是10000. 解题思路:高精度乘法 , 因为数据量比较大, 所以 ...
- hdu 1042 N!(高精度乘法)
Problem Description Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input One N in ...
- Vijos 1040 高精度乘法
描述 高精度乘法 输入:两行,每行表示一个非负整数(不超过10000位) 输出:两数的乘积. 样例1 样例输入1 99 101 样例输出1 9999 题解 这道题和之前的Vijos 1010 清帝之惑 ...
- 【POJ 1001】Exponentiation (高精度乘法+快速幂)
BUPT2017 wintertraining(15) #6A 题意 求\(R^n\) ( 0.0 < R < 99.999 )(0 < n <= 25) 题解 将R用字符串读 ...
- [leetcode]43. Multiply Strings高精度乘法
Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and ...
- H. GSS and Simple Math Problem 高精度乘法模板
链接:https://www.nowcoder.com/acm/contest/104/G来源:牛客网 题目描述 Given n positive integers , your task is to ...
- 高精度乘法--C++
高精度乘法--C++ 模仿竖式乘法,在第一步计算的时候将进位保留,第一步计算完再处理进位.(见代码注释) 若要处理正负情况,可在数据输入后加以判断,处理比较简单. 小数计算也可参照该方法,不过对齐方式 ...
随机推荐
- tomcat知识点
(1)使用线程池 Servlet引擎为每一个请求创建一个隔离的线程,分配这个线程给service()方法,在它执行完后移除这个线程.默认情况下,servlet引擎 为每一个请求创建新的线程.因为创 ...
- nexus启动报错----->错误 1067: 进程意外终止。
1.今天启动nexus报错: 2.错误信息 错误 1067: 进程意外终止. 3.检查发现我之前把jdk升级了. 然而nexus之前指定的jdk将不再生效. 4.解决的方法 找到nexus安装文件夹 ...
- 2.nginx整合PHP
/usr/local/src/下都有什么:.tar.gz文件和解压之后的源码 /usr/local/下都有什么:源码编译之后的东西 安装mysql客户端 安装mysql服务端 启动mysql服务端 s ...
- LVDS、MIPI、EDP、VGA、DVI、HDMI、DP3.0(雷电接口)
1.LVDS 2.mipi 3.EDP:Embedded DisplayPort 4.VGA VGA接口的特性: 1)理论上能够支持2048x1536分辨率画面传输. 2)VGA由于是模拟信号传输,所 ...
- 看完此文,妈妈还会担心你docker入不了门?
本文在个人技术博客不同步发布,详情可猛戳 亦可扫描屏幕右侧二维码关注个人公众号,公众号内有个人联系方式,等你来撩... 上周对象突然心血来潮说想养个小宠物,我问想养啥她又说随便,你看着办!!!这我 ...
- UNIX网络编程卷1 时间获取程序client TCP 使用非堵塞connect
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.当在一个非堵塞的 TCP 套接字(可使用 fcntl 把套接字变成非堵塞的)上调用 co ...
- Storage,Memcache,KVDB都是存储服务,如何区分何时用何种服务
Storage :是SAE为开发者提供的分布式文件存储服务,用来存放用户的持久化存储的文件.用户需要先在在线管理平台创建Domain(相当于一级子目录). Storage为开发者提供分布式文件存 ...
- c# 编程修改 wince 系统时间
[StructLayout(LayoutKind.Sequential)] public struct SYSTEMTIME { public ushort wYear; public ushort ...
- Hibernate的检索策略和优化
一.检索策略概述 当我们实现了一对多或者多对多的映射后,在检索数据库时需要注意两个问题: 1.使用尽可能小的内存:当 Hibernate 从数据库中加载一个客户信息时, 如果同时加载所有关联这个客户的 ...
- js怎么select 选中的值
var obj = document.getElementById(”SelectID”); var index = obj.selectedIndex; // 选中索引var text = obj. ...