zoukankan      html  css  js  c++  java
  • D. Chocolate

    大意就是 给两块 矩形的长方形,一次能砍去一半或者砍去1/3

    就是说对边长质因数分解,划分为 2 3 其他

    砍去一半 消去一个2

    砍去1/3 把3转化为2

    那么 其他 不一样就不行了

    首先 得到 两个矩形 的3的个数 的差值 ,对两个边消去差值,将之转为2

    然后 得到 两个矩形 的2的个数 的差值 ,对两个边消去差值 

    那我们就得到了其他和 一些相同个数的2

    比较一下成不成功

        cin >> a1 >> b1 >> a2 >> b2;
        ll a=a1*b1, b=a2*b2;
        while(a%3==0) ++num1, a/=3;//第一块 3的个数 
        while(b%3==0) ++num2, b/=3;//第二块 3的个数 
        ans+=abs(num1-num2);//答案中只计算到差值 
        while(num1>num2 && a1%3==0) a1-=a1/3, --num1;//3转2 
        while(num1>num2 && b1%3==0) b1-=b1/3, --num1;
        while(num1<num2 && a2%3==0) a2-=a2/3, --num2;
        while(num1<num2 && b2%3==0) b2-=b2/3, --num2;
        
        a=a1*b1, b=a2*b2;
        num1=num2=0;
        while(a%2==0) ++num1, a/=2;
        while(b%2==0) ++num2, b/=2;
        ans+=abs(num1-num2);
        while(num1>num2 && a1%2==0) a1-=a1/2, --num1;
        while(num1>num2 && b1%2==0) b1-=b1/2, --num1;
        while(num1<num2 && a2%2==0) a2-=a2/2, --num2;
        while(num1<num2 && b2%2==0) b2-=b2/2, --num2;
        if(a1*b1!=a2*b2) { puts("-1"); return 0; }
        cout << ans << endl << a1 << ' ' << b1 << endl << a2 << ' ' << b2;
  • 相关阅读:
    内存碎片
    内核对象之异步IO请求完成时调用一个函数
    线程池之在内核对象触发时调用一个对象
    线程池之每隔一段时间调用一个函数
    线程池
    logging模块
    装饰器
    django 2.0 url匹配
    django models 文件夹
    转载
  • 原文地址:https://www.cnblogs.com/PdrEam/p/14710623.html
Copyright © 2011-2022 走看看