大数乘法 V2

2023-11-04

给出2个大整数A,B,计算A*B的结果。

Input

第1行:大数A 第2行:大数B (A,B的长度 <= 100000,A,B >= 0)

Output

输出A * B


  如果用正常的大数乘法来做,会发现时间复杂度是O(N^2)的,显然是会TLE的,为了避免这种情况,我用一位数组存9位值,所以最后就可以是复杂度即使是O(N^2)的,但是N却变成了1e4,可以过去了。

  然后,因为值变大了,所以每次乘完之后,就需要进位了,不然一位存储的信息就会被后面一次次的一位给充满了,1e4 * 1e9 * 1e9是肯定会超过long long的范围的。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <bitset>
//#include <unordered_map>
//#include <unordered_set>
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define eps 1e-8
#define INF 0x3f3f3f3f
#define HalF (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define Lson lsn, l, mid
#define Rson rsn, mid+1, r
#define QL Lson, ql, qr
#define QR Rson, ql, qr
#define myself rt, l, r
#define MP(x, y) make_pair(x, y)
using namespace std;
typedef unsigned long long ull;
typedef unsigned int uit;
typedef long long ll;
const ull mod = 1e9;
const int maxN = 1e5 + 7;
char s[maxN];
vector<ull> a, b, ans;
void In(vector<ull> & x)
{
    x.clear();
    int len = (int)strlen(s);
    ull tmp;
    ans.push_back(0);
    for(int i=len - 1; i>=0; )
    {
        ans.push_back(0);
        tmp = 0;
        for(int j=max(0, i - 9 + 1); j<=i; j++)
        {
            tmp = tmp * 10LL + s[j] - '0';
        }
        x.push_back(tmp);
        i -= 9;
    }
}
void solve()
{
    ull tmp;
    for(int i=0; i<a.size(); i++)
    {
        for(int j=0; j<b.size(); j++)
        {
            ans[i + j] += a[i] * b[j];
            if(ans[i + j] >= mod)
            {
                tmp = ans[i + j] / mod;
                ans[i + j + 1] += tmp;
                ans[i + j] = ans[i + j] - tmp * mod;
            }
        }
    }
    for(int i=0; i<ans.size(); i++)
    {
        if(ans[i] >= mod)
        {
            tmp = ans[i] / mod;
            ans[i + 1] += tmp;
            ans[i] = ans[i] - tmp * mod;
        }
    }
    int len = (int)ans.size() - 1;
    while(len >= 0 && !ans[len]) len--;
    if(!~len) { len = 0; ans[0] = 0; }
    printf("%lld", ans[len]);
    for(int i=len - 1; i>=0; i--) printf("%.9lld", ans[i]);
    printf("\n");
}
int main()
{
    scanf("%s", s);
    In(a);
    scanf("%s", s);
    In(b);
    solve();
    return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大数乘法 V2 的相关文章

  • AcWing 756. 蛇形矩阵

    题目 输入两个整数n和m 输出一个n行m列的矩阵 将数字 1 到 n m 按照回字蛇形填充至矩阵中 具体矩阵形式可参考样例 输入格式 输入共一行 包含两个整数n和m 输出格式 输出满足要求的矩阵 矩阵占n行 每行包含m个空格隔开的整数 数据
  • Prefix Flip【小模拟】

    题目链接CF 1382 C2 题意 有两个字符串 现在我们要让第一个字符串变成第二个字符串 只允许使用2N次操作 问操作 每次操作是选前缀x个 然后首先前缀x全体异或1 然后字符串翻转 于是 很明显的 我们可以按次数每次维护最后一个字符串
  • Basic Level 1010 一元多项式求导 (25分)

    题目 设计函数求一元多项式的导数 注 x n x n xn n为整数 的一阶导数为 n x n
  • Acwing-42. 栈的压入、弹出序列

    每一步进行的操作有两种 将下一个数压入栈中 将当前栈顶元素弹出 判断当前栈顶元素是否和下一个要输出的数是一样的 一样 gt 必然会将当前栈顶元素弹出 不一样 gt 必然会将输入序列的下一个元素加入栈中 class Solution publ
  • 并行程序模拟(ACM/ICPC World Finals 1991)

    附上题目连接 concurrency simulator 本题为紫书数据结构基础篇第一道例题 是一道考察双端队列的模拟题 由于使用了STL 题目的难度和编程量大大降了下来 不过本菜鸟还是花了三个半小时才拿下了这道题 30msAC 可想见代码
  • Working routine【Codeforces 706 E】【二维链表】

    Codeforces Round 367 Div 2 E 可以说是一道模拟题了 写了有些时候 可能是太菜了吧 题意 给出一个原始矩阵 之后有Q次操作 我们将两个矩阵交换位置 题目中保证两个矩阵不相交 给出的是两个矩阵的左上方的端点 以及它们
  • Happiness【2019EC Final G题】【模拟】

    题目链接 题意很长 先翻译一下 由N个参赛队伍 给出其余N 1只参赛队伍 另外一支队伍是我们 本次ICPC一共有10道题 我们知道其余N支队伍每道题的通过时间和错误次数 如果是 则为没有在300分钟内解决该问题 最后给出我们队伍 做出每道题
  • Abaqus打开失败FLEXnet Licensing error:-15,10. System Error: 10061 “WinSock: Connection refused“

    好久没用电脑上的abaqus 今天一点启动就出现如下问题 Cannot connect to license server system The license server manager lmgrd has not been start
  • Basic Level 1012 数字分类 (20分)

    题目 给定一系列正整数 请按要求对数字进行分类 并输出以下 5 个数字 A 1 A 1 A1 能被 5 整除的数字中所有偶数的和 A 2
  • 模拟get和post请求

    一 模拟请求 浏览器及工具模拟 http请求有很多种 常用的请求方式有两种 get请求和post请求 今天先介绍浏览器以及工具模拟请求 下次会介绍代码模拟 1 get请求格式 url param1 value1 param2 value2
  • Shuffle'm Up【模拟】

    题目链接 POJ 3087 题意 给你两刀牌 第一刀是s1 第二刀是s2 然后有目标的理牌的最终形态S12 现在给出理牌的规则 理牌规则 假设s1 123 s2 456 则第一次理牌之后 S 415263 然后新的s1 415 新的s2 2
  • 电流采样电路

    文章目录 前言 一 差分放大电路的优点 二 注意事项 总结 前言 有时候我们需要对电流进行采样 但是电流实际是不好测量的 最简单的方法就是把电流转化为电压 这里推荐一种比较简单的放大电路 差分放大电路 大家可以看模电课本 283 284页的
  • 大数乘法 V2

    给出2个大整数A B 计算A B的结果 Input 第1行 大数A 第2行 大数B A B的长度 lt 100000 A B gt 0 Output 输出A B 如果用正常的大数乘法来做 会发现时间复杂度是的 显然是会TLE的 为了避免这种
  • Acesrc and Hunting【模拟 贪心】

    HDU 6660 题目链接 这道题主要就是讲我们从任意点出发 每次走的都是没走过并且 曼哈顿距离大于1小于3的点 然后问能不能覆盖完整幅图 这里就想到一个很经典的问题 4399小游戏除草游戏 以前玩过的一个小游戏倒是让我对这道题的解法有了方
  • L1-046 整除光棍

    这里所谓的 光棍 并不是指单身汪啦 说的是全部由1组成的数字 比如1 11 111 1111等 传说任何一个光棍都能被一个不以5结尾的奇数整除 比如 111111就可以被13整除 现在 你的程序要读入一个整数x 这个整数一定是奇数并且不以5
  • Candence中查看MOS管阈值电压Vth、Vgs、Vds、跨导gm、Id等详细MOS参数的方法

    Candence中查看MOS管阈值电压Vth Vgs Vds gm Id等详细MOS参数的方法 ADE仿真结束后 点击工具栏Results Print Transient Operating Points 如果是dc仿真就选DC Opera
  • 【暑期每日一题】洛谷 P6437 [COCI2011-2012#6] JACK

    题目链接 P6437 COCI2011 2012 6 JACK 洛谷 计算机科学教育新生态 luogu com cn 题目描述 给定 n 个正整数 a1 an 请从中选择 3 个数字 满足他们的和不大于给定的整数 m 请求出这个和最大可能是
  • Add One

    Add One 题意 给一个数n 有m次操作 每次操作把n的每一位加一 例如1912操作一次后变成21023 问操作m次后 数字的位数 思路 可以初始化0 9每一个数字操作k次后的位数f i k k lt m 然后把n的每一位操作后的长度加
  • 如何在PC上查看一个web页面在移动端的展示效果

    最近在chrome上发现一个东东 emulation 这个果断可以用来模拟web页面在移动端的显示结果 F12的界面 点击 Show drawer 就可以看到这个界面了 这里可以选择各种设备 选中之后 点击emulate就可以模拟了 这个就
  • 猜数字小游戏(JAVA)

    猜数字小游戏 题目描述 代码 运行效果 新增功能 思路 代码 运行效果 题目描述 猜数字 又称 Bulls and Cows 是一种古老的的密码破译类益智类小游戏 起源于20世纪中期 一般由两个人或多人玩 也可以由一个人和电脑玩 通常由两个

随机推荐

  • halcon——缺陷检测常用方法总结(模板匹配(定位)+差分)

    引言 机器视觉中缺陷检测分为一下几种 blob分析 特征 模板匹配 定位 差分 光度立体 halcon 缺陷检测常用方法总结 光度立体 唯有自己强大 博客园 cnblogs com 特征训练 测量拟合 频域 空间域结合 halcon 缺陷检
  • 射极跟随器实验报告数据处理_射极跟随器实验报告

    射极跟随器实验报告 由会员分享 可在线阅读 更多相关 射极跟随器实验报告 3页珍藏版 请在人人文库网上搜索 1 实验六 射极跟随器一 实验目的l 掌握射极跟随器的特性及测量方法 2 进一步学习放大器各项参数的测量方法 二 实验原理下图为射极
  • 自定义异常 raise 关键字

    目录 自定义抛出异常关键字 raise 使用raise主动引发异常 raise 关键字的用法 触发异常 自定义异常类 python从小白到总裁完整教程目录 https blog csdn net weixin 67859959 articl
  • 移动端安全通信的利器——端到端加密(E2EE)技术详解

    前言 端到端加密允许数据在从源点到终点的传输过程中始终以密文形式存在 采用端到端加密 又称脱线加密或包加密 时消息在被传输时到达终点之前不进行解密 因为消息在整个传输过程中均受到保护 所以即使有节点被损坏也不会使消息泄露 端到端加密系统与链
  • jsoncpp库使用实例

    jsoncpp与json json是什么 JSON JavaScript Object Notation 是一种轻量级的数据交换格式 它是一种文本格式 它实际上是一种独立于编程语言的数据格式 几乎所有现代编程语言都支持解析和生成JSON数据
  • C++回文子串

    回文子串 给定一个字符串 你的任务是计算这个字符串中有多少个回文子串 回文串是一个正读和反读都一样的字符串 具有不同开始位置或结束位置的回文串 即使是由相同的字符组成 也会被计为是不同的子串 输入 仅包含一个字符串 长度不会超过 1000
  • RSA私钥及公钥生成

    1 生成密钥 cmd 进入jdk的bin目录下 输入如下命令 keytool genkey alias xxxx keyalg RSA keysize 1024 storetype pkcs12 keystore D xxxx p12 会出
  • xml文件的注释展示

    xml文件的注释格式 lt 被注释的内容 gt 注释不能嵌套定义 XML可以从HTML中分离数据 即能够在HTML文件之外将数据存储在XML文档中 这样可以使开发者集中精力使用HTML做好数据的显示和布局 并确保数据改动时不会导致HTML文
  • Latex中的(左边有大括号的)方程组解决方案汇总

    CODE begin equation begin cases eq1 eq2 end cases end equation 对于不需对齐的方程组这样写比较方便 需要对齐的时候间距太大了 有时候需要对齐 这时候我用 CODE begin e
  • 欢迎来到 C# 9.0(Welcome to C# 9.0)

    C 9 0 已于 2020年11月10日 正式发布了 请点击链接转至 C 9 0 正式发布了 C 9 0 on the record 阅读最新版内容 https mp weixin qq com s b7yd5FoR6jDrhx8K 310
  • php 返回header,PHP header返回http头类型大全 header( Content-T

    php 代码库 定义编码 header Content Type text html charset utf 8 Atom header Content type application atom xml CSS header Conten
  • qt5.5.1 linux 64下载,[更新]Qt Enterprise v5.5.1正式发布[附下载]

    原标题 更新 Qt Enterprise v5 5 1正式发布 附下载 Qt最早诞生于1991年 长期以来一直以 linux平台下 最著名的开发平台 身份 在全世界开发者中享有盛誉 Qt Enterprise是目前最先进 最完整的跨平台C
  • 这个Chrome 插件,让你的GPT无比丝滑!

    ChatGPT的官网最近几天报错越来越频繁了 相信大家都发现了 一旦你离开页面时间比较久 再度返回跟它进行对话 就会出现如下报错 虽然这个报错信息以前也出现过 但现在的频率确实过高 对于每天需要使用 ChatGPT 处理大量任务的用户来说
  • 我们压缩了一批深度学习进阶“传送门”给小白

    编译 ShanLIU Chloe 笪洁琼 Harry 作者 Seth Weidman 阅读这篇文章的必要性 无论是作为行业内的从业者还是一个组织 在开始深度学习应用之前 都需要掌握两件事 1 知其然 掌握一个基础概念 知道深度学习的最新发展
  • Vue路由跳转到新页面之后,返回旧页面保持状态不变

    新项目中遇到了登录时点击用户协议 进入协议页面让用户阅读 然后返回登录页面时发现原来填写的手机号验证码全都没有了 解决方案 使用keep alive 在vue app中添加keep alive标签
  • MyBatis快速入门(四) MyBatis和Spring集成

    导入依赖包 前面介绍了MyBatis的相关知识 现在来介绍一下如何和Spring进行集成 MyBatis和Spring的集成工作是由MyBatis团队完成的 所以我们首先要先引入MyBatis和Spring的集成依赖包 这里我用的是Grad
  • 【渗透测试】Apache Shiro系列漏洞

    目录 Shiro 550 CVE 2016 4437 1 漏洞原理 2 影响版本 3 漏洞利用 Shiro 721 1 漏洞原理 2 影响版本 3 漏洞利用 Shiro认证绕过漏洞 CVE 2020 1957 1 漏洞原理 2 影响版本 3
  • 前端js调用方法的几种方式

    最近在做前端项目 因为没上vue还是原生的jq方法 所以遇到各种各样的问题 在这记录下几种前端触发的方法 1 onclick 在标签内直接写 nclick qz this 即可 然后js中写方法 2 fxbsbutton click 第一个
  • 变量的作用域和变量提升

    京东面试题 面试官小姐姐给出了一道题 var a 100 function test console log a a 10 console log a console log this a var a test 问我这三个会打印出来的值是什
  • 大数乘法 V2

    给出2个大整数A B 计算A B的结果 Input 第1行 大数A 第2行 大数B A B的长度 lt 100000 A B gt 0 Output 输出A B 如果用正常的大数乘法来做 会发现时间复杂度是的 显然是会TLE的 为了避免这种