博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
东东的GAME23小游戏-A-签到题
阅读量:3953 次
发布时间:2019-05-24

本文共 850 字,大约阅读时间需要 2 分钟。

题目

东东在玩游戏“Game23”。
在一开始他有一个数字n,他的目标是把它转换成m,在每一步操作中,他可以将n乘以2或乘以3,他可以进行任意次操作。输出将n转换成m的操作次数,如果转换不了输出-1。
Input
输入的唯一一行包括两个整数n和m(1<=n<=m<=5*10^8).
Output
输出从n转换到m的操作次数,否则输出-1.

Simple Input 1

120 51840
Simple Output 1
7
Simple Input 2
42 42
Simple Output 2
0
Simple Input 3
48 72
Simple Output 3
-1

本题就是一个n通过乘以2或者乘以3变成m的过程,如果n可以变成m,那么输出改变次数,否则输出-1

那么求解可以采用递归或者其他方法,递归可能是好用,不知道为什么有bug,所以我放弃用递归了
大概递归就是change(int x,int y,int i)
然后 change(n2,m,i+1);change(n3,m,i+1);……
没有再然后了,,,,,

既然n可以变成m,那么肯定有m%n=0,如若不然,输出-1

不妨设y=m/n,肯定有y=3a x 2b ,所以我们只需求解这个a+b的值就可以了
具体实现过程见如下代码

#include
#include
#define ll long longusing namespace std;ll n,m;int ans,tag;int change(int i){
if(m%n != 0) return -1; int tot=m/n; tag=tot/2; for(int j=0;j
1) return -1;}int main(){
while(scanf("%d%d",&n,&m)!=EOF){
ans=change(0); cout<
<

转载地址:http://pdwzi.baihongyu.com/

你可能感兴趣的文章
数据库范式简单讲解(1NF、2NF、3NF、4NF、BCNF)
查看>>
快速阅读——《技能篇》
查看>>
快速阅读——《应用篇》
查看>>
活锁、死锁和饥饿
查看>>
进制转换
查看>>
【UML】静态视图分析示例
查看>>
【UML】动态视图分析示例
查看>>
【UML】开发过程应用
查看>>
【UML】四大关系篇
查看>>
行是知之始,知是行之成
查看>>
软件开发文档小结
查看>>
【UML】开发文档应用
查看>>
【UML】类图与用例图关系解析
查看>>
【SLA】理论学习阶段小结
查看>>
【C#】视频学习笔记(三)
查看>>
Power English 初始学习篇
查看>>
Mini Story 的正确打开方式
查看>>
【设计模式】基础篇
查看>>
【设计模式】六大设计原则篇
查看>>
【设计模式】理论整合+应用场景(一)
查看>>