首页 > 试题广场 >

乘除

[编程题]乘除
  • 热度指数:257 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个正整数A,我们希望通过一些操作把它变成正整数B。操作流程如下:初始数字为A,每次可以将当前的数字乘以k,或者除以k。除以k时上取整或者下取整由你决定(k输入给定)。
形式化地:初始时执行,每次操作执行,中的一种,最后要让x的值等于B
问至少需要几步操作(或者不可能达成)?

输入描述:
第一行一个正整数T,表示数据组数。接下来T行,每行三个正整数


输出描述:
对于每组数据,如果有解输出最少的操作数,否则输出-1
示例1

输入

3
1 64 4
7 6 2
16 25 3

输出

3
2
-1

说明

第一组数据1 \times 4 = 4 , 4\times 4 = 16 , 16\times 4 = 64
第二组数据\lfloor \frac{7}{2} \rfloor = 3 , 3\times 2 = 6
头像 Silencer76
发表于 2025-08-31 02:17:21
题目链接 乘除 题目描述 给定三个正整数 。我们希望通过一些操作将 变成 。操作流程如下: 初始数字为 。 每次可以将当前的数字 变为以下三种之一: (向下取整) (向上取整) 问至少需要几步操作才能将 变成 ?如果不可能达成,则输出 -1。 解题思路 这是一个典型的在隐式图上 展开全文
头像 polong
发表于 2025-10-12 13:20:35
#include <algorithm> #include <climits> #include <cmath> #include <iostream> #include <queue> #include <utility> u 展开全文