<html>

题目链接:点击打开链接

题意:给两个数n和m, n每次乘以它的因子变成一个新的值, 求最少乘几次能够变成m。

思路:每次乘以的整数v有两个要求:1.它是n的因子;2.它要尽量大。

又由于假设n能终于到达m。一定是乘以n的k倍, 所以仅仅要n能被m整除。 那么每次取gcd(n, m/n)即可了。

细节參见代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<bitset>
#include<cstdlib>
#include<cmath>
#include<set>
#include<list>
#include<deque>
#include<map>
#include<queue>
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
using namespace std;
typedef unsigned long long ll;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int mod = 1000000000 + 7;
const int INF = 1000000000;
const int maxn = 100;
int T;
ll n,m;
ll gcd(ll a, ll b) {
    return b == 0 ? a : gcd(b, a%b);
}
int main() {
    scanf("%d",&T);
    while(T--) {
        scanf("%I64u%I64u",&n,&m);
        int ans = 0;
        if(n > m || m % n != 0 || n == 1 && m > 1) {
            printf("-1\n");
        }
        else {
            while(n != m) {
                ll v = gcd(n,m/n);
                if(v == 1) break;
                n *= v;
                ++ans;
            }
            if(n == m) printf("%d\n",ans);
            else printf("-1\n");
        }
    }
    return 0;
}


版权声明:本文为博主原创文章,未经博主同意不得转载。

举报

  • 本文已收录于下面专栏:
  • ACM竞赛

相关文章推荐

hdu 4722 Good Numbers(dp)

题目链接:hdu 4722 Good Numbers 题目大意:给出a。b,问从a到b之间。有多少个好数字,好数字的定义为:每一个位的数字相加是10的倍数。 </

HDU - 5505 GT and numbers 【GCD】

GT and numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

欢迎关注CSDN程序人生公众号

关注程序猿生活,汇聚开发轶事。

hdu 4983 Goffi and GCD(数论)

<a target="_blank" href="http://acm.hdu.edu.cn/showproblem.

HDU 5505 GT and numbers(gcd)

题目链接:HDU 5505 GT and numbers 题目大意: 给你两个数 N, M 。N能够通过不断乘 N的因子,来达到 N = M,输出最少须要乘几次N的因子,假设如何都...

HDU 1695 GCD 欧拉函数+容斥原理

转载请注明出处,谢谢<a hr

hdoj5505GT and numbers【gcd】

GT and numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

hdu 4497 GCD and LCM(组合数学)

题目链接:hdu 4497 GCD and LCM 题目大意:给出三个数的最大公约数和最小公倍数,问说有多少种三个数满足。

<s

HDU 5505 GT and numbers(对于被我无意识坑到的3个人我表示抱歉)——BestCoder Round #60

HDU 5505 GT and numbers(对于被我无意识坑到的3个人我表示抱歉)——BestCoder Round #60

HDU 4676 Sum Of Gcd【数论。数据结构(分块)】

静态区间查询,没有更新操作,瞬间就想起来了哪个O(n*sqrt(n))的做法。关键是区间转移的时候不会处理了。仅仅能说数学拙计了…… 对于此类问题的时间复杂度分析。详见:http://blog.csdn.net/yang_7_46/article/details/9618637<

hdu5505 GT and numbers(BestCoder Round #60)

GT and numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) To...
  • d_x_d
  • d_x_d
  • 2015-10-18 14:31
  • 904
  • 微博
    微信
    QQ
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多仅仅同意输入30个字)

posted on 2017-08-18 15:04  yjbjingcha  阅读(207)  评论(0编辑  收藏  举报

导航