【洛谷P2841】A*B Problem【bfs】【高精度】

【洛谷P1303】A*B Problem(C++)(挑战全网创新算法奖) @ 阅读详情

题目大意:

题目链接:https://www.luogu.org/problemnew/show/P2841
给出一个数 A A A,你需要给出一个最小的数 B B B,使得 A A A与 B B B的乘积只含有0和1。


思路:

全部运算用高精度不解释。
显然暴力枚举二进制数是会超时的。因为枚举时会枚举到很多完全没必要算的数。
若 x x x和 y y y两个01数满足 x ≡ y ( m o d   n ) x\equiv y(mod\ n) x≡y(mod n)且 x &lt; y x&lt;y x<y,那么在 x x x和 y y y末尾再加上一个0或1,这两个数 m o d   n mod\ n mod n也是同余的。这样的话大的数字 ( y ) (y) (y)就完全没有必要枚举,前缀为 y y y的数字也不需要枚举了。因为总有一个比它小的数字和它同余,而我们要求的是最小的答案。
所以可以用 b f s bfs bfs来枚举01数,先枚举0,再枚举1,这样就可以保证枚举出来的01数是按从小到大的顺序来枚举的。同时用 h a s h hash hash来判断余数(直接用数组即可。 n ≤ 1 0 4 n\leq 10^4 n≤104),如果已经有一个数和这个数的余数相同,那么这个数就不用继续往下枚举了。
找到答案就直接退出 b f s bfs bfs,因为我们在搜索的时候已经保证了答案尽量小。
然后就高精除单精算出第一个答案,第二个答案就是 a n s ans ans。


代码:

#include <queue>
#include <cstdio>
using namespace std;

const int N=10010,M=200;
int n,a[N];
bool hash[N],flag;

struct node
{
	int a[M+1],p,len;
}ans1,ans2;
queue<node> q;

node xx;
void bfs()
{
	xx.len=1; xx.a[1]=1; xx.p=1; q.push(xx);
	hash[1]=1;
	while (q.size())
	{
		node u=q.front();
		q.pop();
		if (!u.p)
		{
			ans1=ans2=u;
			return;
		}
		for (int i=0;i<=1;i++)
		{
			int p=(u.p*10+i)%n;
			if (!hash[p])
			{
				hash[p]=1;
				node v=u;
				v.len++;
				v.a[v.len]=i;
				v.p=p;
				q.push(v);
			}	
		}
	}
}

int main()
{
	scanf("%d",&n);
	if (n==1) return !printf("1 1\n");
	bfs();
	for (int i=1;i<=ans1.len;i++)
	{
		a[i]=ans1.a[i]/n;
		ans1.a[i+1]+=ans1.a[i]%n*10;
	}
	int i=1;
	while (!a[i]) i++;
	for (;i<=ans2.len;i++) printf("%d",a[i]);
	putchar(32);
	for (i=1;i<=ans2.len;i++) printf("%d",ans2.a[i]);
	return 0;
}
A*B Problem(高精度乘法) A*B Problem 题目传送门 Description Now Give you two integers AA and BB , please caculate the value of AA multiply BB.Attation: AA、BB and are all non-negative numbers. Input Each line contain two integers A... 阅读详情

相关推荐

3个国产AI大模型实战:如何用DeepSeek+豆包+千问批量生成高质量测试用例(附完整代码)

本文详细介绍了如何利用DeepSeek、豆包和千问三大国产AI大模型批量生成高质量测试用例的实战方法。通过Python环境配置、多模型SDK安装和统一接口封装,实现高效测试用例生成,并结合结构化提示词设计和多模型结果对比分析,显著提升测试效率和覆盖率。

weixin_29197699的博客 710

P2841 A*B Problem 题解

这道题只有一个P党的题解,那我就来一发C++的吧,习惯用指针,虽然代码可能写的不是很规范(变量想不好取什么名字),第一次写题解,请多见谅 本题刚看的时候想随便想个算法,然后发现 ###要爆long long 写高精太麻烦,咋办,偷个懒,到最后再化成高精吧 一个贪心(贪心?也许不是)假如有两个数模A余数相等,那就取小的那个 所以理论状态小于10000 BFS一发,别忘了最高位取0也要更新状态,以便于到时候输出的时候能正确的回溯,输出 好吧,讲的不多,贴一波代码 #include<cst

ApocalypseTq的博客 250

用MFRC522+STM32打造智能门禁:从硬件选型到云端控制全流程

本文详细介绍了基于STM32微控制器和MFRC522射频模块构建智能门禁系统的完整流程。从硬件选型、电路设计、底层驱动开发,到系统软件架构与状态机设计,并最终实现通过ESP8266模块接入云端平台(如OneNET)进行远程控制和数据可视化。项目深入探讨了MFRC522的SPI通信、卡片操作流程、天线调试以及云端MQTT集成等关键技术,为嵌入式开发者提供了一个从本地感知到云端管控的物联网项目实战参考。

raspberrypi5的博客 741

洛谷 P1303:A*B Problem(高精度×高精度)

● 一个 n 位十进制数,一个 m 位十进制数,满足:n+m-1≤乘积位数≤n+m

hnjzsyjyj的专栏 548

手把手教你用 Docker 构建自己的 CentOS 基础镜像

目录一、准备CentOS基础镜像二、撰写Dockerfile三、构建Docker镜像四、生成Docker容器 相信码农们经常会听说:虚拟机将成为历史,Docker才是未来 !!! 事实如此,现在大部分公司都在用 Docker 技术,想拥有自己的 Docker 专属镜像,那么 Dockerfile 就是入门,现在让我们一起来看一下 ------ 构建 Docker 镜像的全过程。 好文章 记得收藏...

Nick.Peng's Blogs 1万+

详解电路设计中的RC电路

​ 一、什么是RC电路 RC电路是指由电阻R和电容C组成的电路,它是脉冲产生和整形电路中常用到 的电路。 常见的RC充、放电电路、RC积分电路合RC微分电路接下来详细讲解。 二、RC充、放电电路 RC充、放电电路如下图所示,下面通过充电和放电两个过程来分析此电路。 ​RC充、放电电路图 (1)RC充电电路 RC充电电路图如下图(a)所示 RC充电电路图及充电曲线图 ​由上图分析: 将上图a中开关S置于“1”处,电源E开始通过电阻R对电容C充电,由于刚开始充电时电容两端没有..

IT xiaobai 4万+

洛谷 P1303 A*B Problem (高精度乘法)

高精度乘法 洛谷P1303 Problem 测试通过

Yvonne_78的博客 440

CameraLink接口详解:从引脚定义到信号传输

本文详细解析了CameraLink接口的物理连接与信号传输机制。从MDR26连接器的引脚定义与镜像关系入手,深入讲解了BASE与MEDIUM模式下的信号映射、LVDS差分传输原理,并强调了屏蔽层处理与端接电阻等关键硬件设计细节。文章结合实战经验,提供了常见图像传输问题的排查思路,是工业视觉领域高速图像传输的实用指南。

weixin_28318011的博客 889

深刻理解贝叶斯公式(条件概率)(P(A,B))

深刻理解贝叶斯公式

hxxjxw的博客 6327

AI计算,为什么要用GPU?

几年后,2012年,神经网络之父杰弗里·辛顿(Geoffrey Hinton)的两个学生——亚历克斯·克里切夫斯基(Alex Krizhevsky)、伊利亚·苏茨克沃(Ilya Sutskever),利用“深度学习+GPU”的方案,提出了深度神经网络AlexNet,将识别成功率从74%提升到85%,一举赢得Image Net挑战赛的冠军。根据形态,GPU可分为独立GPU(dGPU,discrete/dedicated GPU)和集成GPU(iGPU,integrated GPU),也就是常说的独显、集显。

经营范围: CTA、SRRC、CCC、移动、电信、联通入库 1675

手把手教你完成YOLOv11分类识别界面搭建,使用Qt6设计YOLOv11分类识别系统,前台系统+后台管理系统开发实战,全网最详细教程

本项目结合YOLOv11分类识别算法和PySide6框架,开发了一套图形化分类识别系统。系统支持图片、视频和摄像头实时分类检测,并具备完善的用户管理功能,包括登录验证、个人信息修改等模块。最新版本新增了管理员后台管理系统,包含用户管理、权限控制等功能。系统采用MySQL数据库存储用户数据,界面设计采用QtDesigner完成,实现了高效的目标分类与友好的交互体验。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1051

A*B problem

给出两个非负整数,求它们的乘积。输入共两行,每行一个非负整数。输出一个非负整数表示乘积。

weixin_63201442的博客 347

Python爬取小红书种草商品评论数据:从入门到实战全攻略(附反爬+情感分析方案)

Python爬取小红书种草商品评论数据,核心是“抓包找到正确的接口+处理登录验证+合理的反爬策略”。新手不用一开始就追求多笔记批量爬取和情感分析,先把单笔记的评论抓取和存储跑通,再逐步扩展功能。我做的这个系统现在每天帮朋友爬取3-5款美妆产品的评论,自动做情感分析和关键词提取,她再也不用手动翻评论了,效率提升了80%。如果你们在开发中遇到具体问题,比如接口找不到、Cookie过期、IP被封,都可以在评论区留言,我会一一解答。后续也可以出一期小红书笔记种草数据爬取的教程,帮助大家更全面地分析竞品数据。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1350

A*B Problem(模9取余法)

描述 设计一个程序求出A*B,然后将其结果每一位相加得到C,如果C的位数大于等于2,继续将C的各位数相加,直到结果是个一位数k。 例如: 6*8=48; 4+8=12; 1+2=3; 输出3即可。 输入 第一行输入一个数N(0&lt;N&lt;=1000000),表示N组测试数据。 随后的N行每行给出两个非负整数m,n(0&lt;=m,n&lt;=10^12)。 输出 对于每一...

WhileTrue 1164

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

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

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C4: 贝叶斯公式及其应用

》》点赞,收藏+关注,理财&技术不迷路《《 P(A,B)=P(A|B)⋅P(B)=P(B|A)⋅P(A) 通过移项,我们可以得到: P(A|B)= P(B|A)⋅P(A) / P(B) 这个就是我们的贝叶斯公式的雏形,我们暂时不分析这个公式,我们来看看先验概率prior probability和后验概率posterior probability。我们知道P(A|B)是在 B 发生的情况下 A 发生的可能性: 首先,事件B发生之前,我们对事件A的发生有一个基本的概率判断,称为A的先验概率,用

大厂offer宝典 1833

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

A*B Problem

【题目描述】 给出一个数A,你需要给出一个最小的数B,使得A与B的乘积只含有0和1。 【输入格式】 一个正整数A 【输出格式】 正整数B和A与B的乘积,两数之间用一个空格隔开 【样例输入】 6 【样例输出】 185 1110 【分析】 首先想到的是穷举2进制01串,但这样肯定会超时。 可以根据二进制01串(作为十进制数运算)除以A的余数进行递推...

261

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

概率论笔记(条件、联合、全概率、贝叶斯)

markdown编辑器使用方法 Markdown编辑器的学习 条件概率 P(A|B) P (A|B) 表示在B发生的条件下,发生A的概率 对于等概率模型的情况,下面关于条件概率的定义是合适的: P(A∣B)=事件A∩B的试验结果数事件B的试验结果数,即P(A∣B)=P(A∩B)P(B) P(A|B) = \frac{事件A \cap B的试验结果数}{事件B的试验结果数},即 P(A|B) = \frac{P(A \cap B)}{P(B)} P(A∣B)=事件B的试验结果数事件A∩B的试验结果数​,即

tao_292的博客 1570

A*B Problem(FFT模板)

原题链接 ( AcWing版 ) 原题链接 ( 洛谷版 ) 题目描述 给定两个正整数 AAA 和 BBB,请你计算 A×BA×BA×B 的值。 输入格式 共两行,第一行包含整数 AAA,第二行包含整数 BBB。 输出格式 共一行,包含 A×BA×BA×B 的值。 数据范围 1≤A1 ≤ A1≤A 与 BBB 的长度 ≤ 10510^5105。 输入样例: 2 3 输出样例: 6 强烈推荐这个视频:快速傅里叶变换(FFT)——有史以来最巧妙的算法? #include<bits/stdc++.h&gt

m0_51864047的博客 262

A × B problem (高精度)

A × B problem 输入格式 数据的第一行是整数T(1 \leq T \leq 20)T(1≤T≤20),代表测试数据的组数。接着有TT组数据,每组数据只有一行,包括两个正整数AA和BB。但AA和BB非常大,Redraiment 能保证这些数用 long 来保存一定会溢出。但AA和BB的位数最大不会超过100100位。 输出格式 对应每组测试数据,你...

xcatf的博客 1119

A × B problem

1253: A × B problem Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 6  Solved: 4 [Submit][Status][Web Board] Description Redraiment碰到了一个难题,需要请你来帮忙:给你两个整数,请你计算A × B。 Input 数据的第一行是整数T(

不会思考的机器 1186

A*B Problem(模拟)

思路上比较简单,模拟小学乘法即可。需要注意的事项都在注释中。

默默无闻但不碌碌无为 193

洛谷:A*B Problem C语言

题目描述 求两数的积。 输入格式 两行,两个整数。 输出格式 一行一个整数表示乘积。 输入输出样例 输入 #1复制 1 2 输出 #1复制 2 说明/提示 每个数字不超过 102000,需用高精。

m0_59321697的博客 960

【题解】【洛谷P1601 P1303 P1009】【高精度】—— A+B Problem,A*B Problem,[NOIP1998 普及组] 阶乘之和

在这篇文章中,我将会讲解三篇高精度有关的题目,以此加强对高精度的使用熟练度。这三篇题目都会用到我在高精度算法解析和高精度赛场用模板中分装的结构体,没有看过的同学可以点进去了解一下。

Pantheraonca的博客 765
上一篇: 【洛谷P4231】三步必杀【差分】
下一篇: 【JZOJ3301】家族【并查集】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值