蓝桥杯真题 大数乘法 题解

2012年第三届C/C++ B组蓝桥杯省赛真题 2013年第四届C/C++ B组蓝桥杯省赛真题真题第一题:微生物增殖第二题:福尔摩斯探险第三题:比酒量第四题:奇怪的比赛第五题:方阵转置第六题:大数乘法第七题:放棋子第八题:密码发生器第九题:夺冠概率第十题:取球游戏题解第一题:微生物增殖第二题:福尔摩斯探险第三题:比酒量第四题:奇怪的比赛第五题:方阵转置第六题:大数乘法第七题:放棋子第八题:密码发生器第九题:夺冠概率第十题:取球游戏 真题 第一题:微生物增殖 题目描述 第二题:福尔摩斯探险 题目描述 第三题:比酒量 题目描述 第四题:奇怪的比赛 题目描述 阅读详情

题目:
大数乘法
对于32位字长的机器,大约超过20亿,用int类型就无法表示了,我们可以选择int64类型,但无论怎样扩展,固定的整数类型总是有表达的极限!如果对超级大整数进行精确运算呢?一个简单的办法是:仅仅使用现有类型,但是把大整数的运算化解为若干小整数的运算,即所谓:“分块法”。
如图【1.jpg】表示了分块乘法的原理。可以把大数分成多段(此处为2段)小数,然后用小数的多次运算组合表示一个大数。可以根据int的承载能力规定小块的大小,比如要把int分成2段,则小块可取10000为上限值。注意,小块在进行纵向累加后,需要进行进位校正。
这里写图片描述

以下代码示意了分块乘法的原理(乘数、被乘数都分为2段)。


void bigmul(int x, int y, int r[])
{
int base = 10000;
int x2 = x / base;
int x1 = x % base; 
int y2 = y / base;
int y1 = y % base; 


int n1 = x1 * y1; 
int n2 = x1 * y2;
int n3 = x2 * y1;
int n4 = x2 * y2;


r[3] = n1 % base;
r[2] = n1 / base + n2 % base + n3 % base;
r[1] = ____________________________________________; // 填空
r[0] = n4 / base;

r[1] += _______________________;  // 填空
r[2] = r[2] % base;
r[0] += r[1] / base;
r[1] = r[1] % base;
}




int main(int argc, char* argv[])
{
int x[] = {0,0,0,0};


bigmul(87654321, 12345678, x);


printf("%d%d%d%d\n", x[0],x[1],x[2],x[3]);


return 0;
}




请分析代码逻辑,并推测划线处的代码。


答案写在 “解答.txt” 文件中


注意:只写划线处应该填的内容,划线前后的内容不要抄写。

思路:
题目原理:
乘法分配律…(a + b) * c = a * c + b * c
举例:1234 * 34 = (1200 + 34) * 34 = 1200 * 34 + 1200 *34
第1个填空见下图:
第2个填空处理进位问题
这里写图片描述

Code:

#include <iostream>
using namespace std;

void bigmul(int x, int y, int r[])  
{  
    int base = 10000;  
    int x2 = x / base;  
    int x1 = x % base;   
    int y2 = y / base;  
    int y1 = y % base;   

    int n1 = x1 * y1;   
    int n2 = x1 * y2;  
    int n3 = x2 * y1;  
    int n4 = x2 * y2;  

    r[3] = n1 % base;  
    r[2] = n1 / base + n2 % base + n3 % base;  
    r[1] = n2 / base + n3 / base + n4 % base; // 填空  
    r[0] = n4 / base;  

    r[1] += r[2] / base;  // 填空  
    r[2] = r[2] % base;  
    r[0] += r[1] / base;  
    r[1] = r[1] % base;  
}  


int main(int argc, char* argv[])  
{  
    int x[] = {0,0,0,0};  

    bigmul(87654321, 12345678, x);  

    printf("%d%d%d%d\n", x[0],x[1],x[2],x[3]);  

    return 0;  
}
[蓝桥杯][2014年第五届真题]斐波那契--题解(快速矩阵幂)C++代码 题目描述 斐波那契数列大家都非常熟悉。它的定义是: f(x) = 1 … (x=1,2) f(x) = f(x-1) + f(x-2) … (x> 2) 对于给定的整数 n 和 m,我们希望求出: f(1) + f(2) + … + f(n) 的值。但这个值可能非常大,所以我们把它对 f(m) 取模。 公式如下 但这个数字依然很大,所以需要再对 p 求模。 输入 输入为一行用空格分开的整数 n m p (0 < n, m, p 阅读详情

相关推荐

蓝桥杯国赛备战指南:从真题剖析到核心算法精讲

算法竞赛是检验编程与问题解决能力的重要途径,其核心在于对数据结构与算法的深刻理解与应用。动态规划、深度优先搜索等经典算法构成了解决复杂问题的理论基础,通过状态转移与剪枝优化,能够高效处理大规模计算任务。掌握这些技术不仅能提升逻辑思维与代码实现能力,更在软件开发、人工智能等领域具有广泛的应用价值。本文聚焦蓝桥杯国赛,结合动态规划和深度优先搜索等高频考点,系统解析备赛策略与实战技巧,帮助选手构建坚实的算法知识体系与高效的解题框架。

weixin_33858485的博客 449

大数运算(四则、阶乘、阶乘和、2的n次方)

目录 前言 一、大整数加法 二、大整数减法 三、大整数乘法 四、大整数除法 五、大数阶乘 六、计算2的N次方 前言 之前是写过一些大数运算的题的,然后一个学期没看代码,一些细节又不会了,所以就打算拿一些大数运算的题做一个汇总,方便自己以后理解,起码证明自己学过。大数运算其实就是一维数组的应用,大数的加减乘除和大数阶乘都可以做出来的一维数组应该就算很熟练了(菜鸟不敢说大话)。另外说明一下,博主是用Openjudge网站上NOI里面的题目来写的,不过和其它网站的...

沉在海里的鱼的博客 3276

告别手动打卡:逍遥模拟器+宥马运动自动跑步脚本配置全流程

本文详细介绍了如何利用逍遥模拟器和自动化脚本实现宥马运动的自动跑步功能,告别手动打卡的繁琐。从环境准备、脚本部署到定位配置和智能调度,全流程指导用户完成自动化设置,提升效率并确保运动数据的真实性。

weixin_42532473的博客 546

算法经典题目练习(大整数乘法,线性规划,过河问题,素数环)

以下是前段时间做的算法课设,其实就是4道题目(对动态规划算法、分治策略、回溯法、贪心算法的简单应用)这几天忙考试,今天有空,正好把代码和题目都弄上来。 打算以后也好好记录学习和生活。 问题1:大整数乘法 问题描述 当你遇到两个100位的数相乘时,你该怎么办呢?此题求两个不超过150位的非负整数的积。 输出一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。 输入样例 12345678900 98765432100 输出样例 1219326311.

qq_50455637的博客 1165

HFSS与AI融合:智能算法如何重塑天线设计流程

本文探讨了HFSS与AI融合如何通过智能算法革新天线设计流程。在5G/6G通信时代,AI技术如机器学习和遗传算法显著提升了高频电磁场仿真效率,将传统设计周期从数周缩短至数小时,并优化了天线性能。文章详细介绍了AI与HFSS的集成策略、关键技术突破及典型应用案例,展示了智能算法在天线设计中的巨大潜力。

weixin_29035147的博客 779

LVGL在RTOS下的线程安全实践:从卡死到流畅的界面切换

本文探讨LVGL在RTOS环境下的线程安全实践,重点分析FreeRTOS多任务同步机制,包括互斥锁、任务通知和消息队列方案。通过实际案例展示如何避免界面卡顿和系统死锁,实现从卡死到流畅的界面切换,为嵌入式GUI开发提供可靠的适配解决方案。

uran的专栏 1111

【蓝桥杯预备营集结四】软件类 C/C++ 预备试题分析及解答

🎉2022年4月9日,今天就是正式比赛的日子了,为备战蓝桥杯,大家辛苦了,不过努力总会有回报的,摒弃杂念,认真考试,相信各位能够取得一个好成绩,预祝参与蓝桥杯的想伙伴们马到成功,直到巅峰🎉 🤗虽然正在考试,但是【蓝桥杯预备营集结系列】不会断更,将持续进行更新汇总。。。 🎉🎉目前持续总结更新🎉🎉 💗 大家好🤗🤗🤗,我是左手の明天!💗 📆 最近更新:2022 年 4 月 9 日,左手の明天的第222篇原创博客 目录 🚩微生物增值 🚩古堡算式 🚩比酒量 🚩奇怪的比赛 🚩转方阵 ...

左手の明天的博客 1611

2024.12.29 【RNA-seq】Rawdata数据缺失问题与解决方案

Fastq格式是一种用于存储高通量测序数据的文件格式,包含序列和相应的质量信息。第一行以开头,后接序列标识符;第二行是测序的DNA序列;第三行以开头,可能会跟随序列标识符;第四行是对应的质量值,以ASCII字符表示。Rawdata的数据完整性通常情况下是没有问题的,但我们仍然需要对下机数据进行验证,确保后续分析的正常进行,好的分析习惯可以提高整体的分析效率,避免很多不必要的麻烦。

1112

蓝桥杯算法训练P0805 大数乘法

为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法。具体来说,首先以字符串的形式输入两个整数,每个整数的长度不会超过10位,然后把它们相乘的结果存储在另一个字符串当中(长度不会超过20位),最后把这个字符串打印出来。例如,假设用户输入为:62773417和12345678,则输出结果为:774980393241726.以上代码好理解 但是这里并未排除两个相乘的大数过小的情况 也就是最终结果的数组前面为零的情况 导致最终输出结果出错。将结果的小部分相加(进位)得到的结果即为乘法的结果。

2301_76276891的博客 626

Android UI 组件系列(二):Button 进阶用法

在这篇博客中,我们深入探讨了 Button 的进阶用法,重点介绍了如何通过 事件处理 来响应用户的操作,如何使用 自定义样式 来提升按钮的外观,并利用 StateListDrawable 来管理按钮在不同状态下的表现。这些技巧能够帮助你打造更具交互性、视觉吸引力和动态响应的按钮,提升用户体验。

weixin_39339407的博客 1625

西安交通大学软件学院——分布式系统练习题(综合题)

摘要:本文探讨了分布式系统的核心特性与关键问题。首先阐述了分布式系统的8种透明性特性,包括访问、定位、迁移等。然后通过具体案例分析了分布式事务的回滚机制、域名解析的迭代与递归过程、不同分布式系统的异同比较。重点讨论了RPC通信中客户端/服务器崩溃的处理方法,包括消灭、再生和到期三种策略。最后介绍了Lamport时间戳算法在进程通信中的应用及问题解决方案。全文涵盖了分布式系统设计中的透明性、可靠性、一致性等核心问题。

qq_73044452的博客 204

【蓝桥杯】历届试题 大臣的旅费(2次深度优先搜索(dfs)、树的直径)

历届试题 大臣的旅费 问题描述 很久以前,T王国空前繁荣。为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。 J是T国重要大臣,他巡查于各大城市之间,体察民情。所以,从一个城市马不停蹄...

酱懵静的博客 2472

【Unity】 预制体Prefab使用说明

在 Unity 中,Prefab 是一个可以预先制作并重复使用的 GameObject 或组件集合,Prefab 中的 GameObject 可以有子对象和其他组件。

灵境引路人 2850

蓝桥杯知识点汇总:基础知识和常用算法

此系列包含蓝桥杯(软件类)所考察的绝大部分知识点,算法,和写算法题必备的JAVA的基础语法,API,对想从C/C++转到JAVA组以及初学算法的同学会有帮助。

GD_ONE的博客 12万+

Unreal5.6从入门到精通之 如何实现MetaHuman数字人

本文介绍了使用HYPER3D-ChatAvatar网站生成3D头部模型,并导入Unreal Engine制作数字人的完整流程。首先上传照片生成头部模型(约2分钟),设置参数后下载模型文件。然后在UE5.6中创建项目,激活MetaHuman插件,导入头部模型并调整肤色、面部特征和身体模板。通过MetaHuman Creator组装数字人蓝图,支持添加音频/视频动画功能。关键步骤包括:取消Rigging选项节省时间、切换英文模式避免材质问题、使用Live Link Face应用实现面部捕捉等。整个流程约需5-1

TxNet 1348

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

2013年第四届蓝桥杯省赛真题题解(JavaB组)

前言:我是一个小白,从今天起我将陆陆续续写关于蓝桥杯真题的总结,同时还有我不熟悉题型的扩展,大题的输入是我写的输入类,可以提高效率,可以作为模板.最后如果有失误的地方,请大家批评指正! 第一题 世纪末的星期 题目 曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。 还有人称今后的某个世纪末的12月31日,如果是星期一则会… 有趣的是,任何一个世纪末的年份的12月31日都不可能是星...

最白の白菜的博客 1053

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

蓝桥杯知识点复习(超级全面)

此系列包含蓝桥杯(软件类)所考察的绝大部分知识点,一共有基础语法,常用API,算法和数据结构,和往年真题四部分,虽然语言以JAVA为主,但算法部分是相通的,C++组的小伙伴也可以看哦。 JAVA基础语法: 备战蓝桥杯(一):一般输入输出 和 快速输入输出 备战蓝桥杯(二):java编程规范和常用数据类型 备战蓝桥杯(三):常用功能符以及循环结构和分支结构 备战蓝桥杯(四):函数(方法)、类和对象 ......

嗜雨的博客 2万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

蓝桥杯算法提高 ADV-197 大数乘法 题解

题目: 当两个比较大的整数相乘时,可能会出现数据溢出的情形。为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法。具体来说,首先以字符串的形式输入两个整数,每个整数的长度不会超过8位,然后把它们相乘的结果存储在另一个字符串当中(长度不会超过16位),最后把这个字符串打印出来。例如,假设用户输入为:62773417和12345678,则输出结果为:774980393241726. 输入: ...

不行不至 478

“蓝桥杯”练习系统试题集,题解答案(C/C++)

基础练习 BASIC-1 闰年判断 #include&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; using namespace std; bool f(int x){ if(x%4==0&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a

薛崇祥的博客 7570

2012第三届蓝桥杯 C/C++本科组真题及题解(未完待续)

1. (3')微生物增殖     假设有两种微生物 X 和 Y     X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。     一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。     现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。     如果X=10,Y=90  呢?     本题的要求就是写出这两种

cr496352127的博客 820

蓝桥杯国赛Java C组真题解析:从算法核心到实战策略

算法竞赛是检验编程与逻辑思维能力的有效途径,其核心在于对经典算法模型的理解与应用。动态规划、深度优先搜索(DFS)、广度优先搜索(BFS)等算法构成了解决复杂问题的理论基础,通过状态定义、转移方程与剪枝优化,能将指数级复杂度问题转化为可解形式。这些技术的价值在于高效处理大规模数据,在路径规划、资源分配等实际场景中发挥关键作用。对于备战蓝桥杯等顶级赛事的选手而言,掌握这些核心算法并应用于真题实战是提升竞争力的关键。本文聚焦于**动态规划**与**搜索剪枝**等高频考点,结合Java工程实践,拆解如何将算法原理

weixin_30698527的博客 321

蓝桥杯2024真题深度解析:从算法基础到实战策略

算法竞赛是检验编程与问题解决能力的重要途径,其核心在于将经典算法原理应用于具体场景。动态规划通过状态定义与转移方程解决多阶段决策问题,而图论算法如BFS/DFS则用于处理路径搜索与连通性分析。这些技术的价值在于能够高效、优雅地解决大规模复杂问题,广泛应用于人工智能、数据分析、系统优化等领域。本文聚焦蓝桥杯2024年真题,通过剖析**动态规划**的变形应用与**图论搜索**的综合场景,揭示当前竞赛从模板套用向实际问题建模倾斜的趋势,为备赛者提供从知识到能力的提升路径。

weixin_33889245的博客 440

蓝桥杯1604-阶乘-题解(超详细JAVA版两种解法)

留余数法和BigInteger法两种方式解决大数阶乘问题

sariman的博客 390

【蓝桥杯题解】矩阵翻硬币

历届试题 矩阵翻硬币 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述   小明先把硬币摆成了一个 n 行 m 列的矩阵。  随后,小明对每一个硬币分别进行一次 Q 操作。  对第x行第y列的硬币进行 Q 操作的定义:将所有第 i*x 行,第 j*y 列的硬币进行翻转。  其中i和j为任意使操作可行的正整数,行号和列号都是从1开始。  当小明对所有硬币都进行了一次 Q 操

zhishuang.rao的博客 979

2024蓝桥杯真题解析:从场景抽象到算法实战的备赛指南

算法竞赛的核心在于将现实问题抽象为数学模型,并运用高效的数据结构与算法求解。动态规划通过状态定义与转移方程解决最优子结构问题,而搜索算法(如DFS、BFS)则用于遍历解空间或寻找最短路径。这些技术在工程实践中价值显著,例如在路径规划、资源调度等场景中实现优化。近年来,赛事题目更注重与真实场景结合,如“校园美食家”需在时间约束下最大化满意度,这要求选手从生活化描述中抽象出图论模型,并可能运用状态压缩动态规划求解。同时,“智能小车”类题目融合了搜索与控制逻辑,考察系统思维与路径回溯能力。掌握场景抽象方法与核心算

weixin_33724059的博客 1117

蓝桥杯算法题解:质数筛法与模运算优化实战

质数筛法是算法竞赛与编程面试中的高频考点,其核心在于高效生成指定范围内的所有质数。埃拉托斯特尼筛法通过标记倍数的方式,能在接近线性的时间复杂度内完成筛选,是处理批量质数问题的标准解法。理解筛法的原理,不仅能应对基础质数判断,更是优化算法效率、避免超时的关键。在实际工程与竞赛中,质数常与模运算结合,例如计算前n个质数的乘积并对大数取模。这里必须运用模运算的分配律,在连乘过程中步步取模,防止中间结果溢出导致计算错误。本文以一道经典的蓝桥杯算法题为例,深入剖析了质数筛法的实现细节与模运算的优化技巧,帮助读者掌握从

weixin_30703911的博客 546
上一篇: 蓝桥杯训练 大数加法 题解
下一篇: 蓝桥杯算法提高 ADV-197 大数乘法 题解
SkyeBCI
博客等级 码龄9年 231粉丝 211原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值