zoukankan      html  css  js  c++  java
  • Codeforces Round #680A

    Codeforces Round #680A

    大意

    给定 (p)(q) ((1leq p leq 10^{18};1 leq q leq 10^9))

    求最大的(x),要求 (xmid p) 并且 (q mid x)

    思路

    这题证明了我是真的菜...

    第一种情况 (q mid p)

    显然答案就是(p)

    第二种情况 (q mid p)

    (c = p/q)

    考虑因式分解,设(r)(q)的一个素因子。

    (ecause q mid (q/r))

    所以将(c)因子中的(r)都丢掉,即 $c' mid c $ , (r mid c')(c'*r^k = c)

    答案显然就是 (max(c'_i*q/r_i)) , (r_i)(q) 的第 (i) 个素因子。

    代码

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <cstring>
    using namespace std;
    
    #define ll long long
    #define ull unsigned long long
    #define cint const int&
    #define Pi acos(-1)
    const int inf_int = 0x7fffffff;
    const ll inf_ll = 0x7fffffffffffffff;
    const double ept = 1e-9;
    
    int t;
    ll p, q;
    
    ll sol(ll div) {
        if(div==1) return 1;
        // cout << div << endl;
        ll tmp =  p/q;
        while(!(tmp%div)) tmp /= div;
        return tmp*q/div;
    }
    
    int main() {
        cin >> t;
        while(t--) {
            cin >> p >> q;
            ll ans = 0;
            if(p%q) {cout << p << endl; continue;}
            else for(ll i = 1; i <= (int)sqrt(q)+1; i++)
                if(!(q%i)) {
                    ans = max(ans, max(sol(i), sol(q/i)));
                }
            if(!ans) ans = p/q;
            cout << ans << endl;
        }
        return 0;
    }
    
  • 相关阅读:
    深入分析String类型(一)
    创建泛型类
    XML数据的读取—数据库配置文件
    Config配置文件读写
    jQuery动画
    设置屏幕快捷键
    jQuery事件
    jQuery操作DOM
    Python 二进制文件网址
    Centos使用crontab自动定时备份mysql的脚本
  • 原文地址:https://www.cnblogs.com/ullio/p/13945299.html
Copyright © 2011-2022 走看看