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;
    }
    
  • 相关阅读:
    Java代码检测工具
    java编程工具
    100-days: The one day
    前端书籍整理
    vue 学习笔记(二)
    从零开始写一个npm包及上传
    Vue Baidu Map 插件的使用
    对数组对象进行过滤
    使用css方法使footer保持在页面的最底部
    判断是第一次打开界面?还是刷新
  • 原文地址:https://www.cnblogs.com/EricQian/p/15314196.html
Copyright © 2011-2022 走看看