zoukankan      html  css  js  c++  java
  • 【做题记录】CF1444A Division

    CF1444A Division

    题意:

    给定 (t) 组询问,每组给两个数 (p_i)(q_i) ,找出最大的整数 (x_i) ,要求 (p_i) 可被 (x_i) 整除,且 (x_i) 不可被 (q_i) 整除 。

    题解:

    呜呜呜这道题总共算下来我爆了 (15)(dots) 妥妥掉分

    • (p mid q) :显然答案为 (p)

    • (pmid q) :枚举每个 (q) 的因子 (d) ,将 (p) 一直除 (d) 直到不能被 (q) 整除为止,余数就是对应的答案 。最终答案就是所有余数中算出来的答案取 (max)

      为什么这是正确的:因为使劲除完 (d) 以后的余数一定是 (p) 的因子,且一定不被 (q) 整除 。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define Maxn 105
    typedef long long ll;
    ll maxll(ll x,ll y){ return x>y?x:y; }
    ll t,p,q,ans;
    ll cnt(ll x)
    {
    	 ll tmp=p;
    	 while(tmp%q==0) tmp/=x;
    	 return tmp;
    }
    int main()
    {
         //freopen(".in","r",stdin);
         //freopen(".out","w",stdout);
    	 scanf("%lld",&t);
    	 while(t--)
    	 {
    	 	 scanf("%lld%lld",&p,&q),ans=1;
    	 	 if(p%q) printf("%lld
    ",p);
    	 	 else
    	 	 {
    	 	 	 for(ll i=2;i*i<=q;i++) if(q%i==0)
    	 	 	 	 ans=maxll(ans,cnt(i)),ans=maxll(ans,cnt(q/i));
    	 	 	 ans=maxll(ans,cnt(q));
    	 	 	 printf("%lld
    ",ans);
    		 }
    	 }
         //fclose(stdin);
         //fclose(stdout);
         return 0;
    }
    
  • 相关阅读:
    JS 对象定义
    JavaScript HTML DOM 元素(节点)
    DOM 事件
    DOM CSS
    DOM HTML
    DOM 简介
    JS 验证
    JS 错误
    JavaScript Break 和 Continue 语句
    JS While
  • 原文地址:https://www.cnblogs.com/EricQian/p/15314196.html
Copyright © 2011-2022 走看看