D. 数字倍增

    传统题 1000ms 256MiB

数字倍增

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

给定正整数nn 和初始数xx, 你可以对xx 执行若干次操作,每次操作定义如下: 从xx 当前的十进制表示中选择任意一个数字 d{2,3,,9}d\in\{2,3,\dots,9\},并将xx更新为 x×dx \times d

目标:你的目标是使xx 的十进制表示长度(不含前导零)达到至少nn 位。求最少操作次数;如果无法在有限次操作内达到目标,请输出1-1

输入格式

一行两个整数 n,xn,x

输出格式

输出最少操作次数,无解输出 1-1

输入输出样例

样例1 输入:3 100 输出:0

样例2 输入:2 9 输出:1

数据范围

对于 60%60\% 的数据满足 2n192\le n \leq 19

对于 20%20\% 的数据满足n=20n =20

对于10%10\% 的数据,n=10n =10

对于 10%10\% 的数据,n=30n=30

特别说明:题目保证输入的初始值 以及最终答案所在的数值范围均在 int 以内,

提示

由于搜索过程中产生的中间数字可能超过 64 位整数的表示范围,可使用 __int128

类型进行数值存储与计算。

__int128

使用简要说明:

__int128 是 GCC 编译器提供的扩展类型,支持基本的算术运算( + , - , * , / , % )。

该类型不支持标准输入输出流( cin / cout ),需通过自定义函数将数值转换为字符串或字符逐位处理以完成输入输出。

CSP-J模拟练习(1)

未参加
状态
已结束
规则
IOI
题目
5
开始于
2026-5-31 17:30
结束于
2026-5-31 23:30
持续时间
6 小时
主持人
参赛人数
4