1538D - Another Problem About Dividing Numbers

题目链接
题意:给a ,b 两个数, 要求在恰好 k 步操作内使得 a, b相等, 操作为让 a 或 b 除去一个自身的因子。
思路:分解质因数,设 a ,b 的最大公因子为gcd,最少需要 2−(a==gcd)−(b==gcd)2 - (a == gcd) - (b == gcd)2−(a==gcd)−(b==gcd) (记为minv)步使得两者相等,最多需要cal(a/gcd)+cal(b/gcd)cal(a/gcd) + cal(b/gcd)cal(a/gcd)+cal(b/gcd) (记为 n )步让 a ,b 都变为为 gcd,cal(x)cal(x)cal(x) 计算质因子个数。记maxv = n + m
当 minv≤k≤maxvminv \le k \le maxvminv≤k≤maxv 时,满足要求,否则不满足。
这里还要考虑特殊情况, k = 1, 且 a = b 时,显然无法完成。
(不要想 a 和 b 选择相同的数进行操作,反正都是用因子拼起来的数)
代码

#include<bits/stdc++.h>
using namespace std;const int N = 1e5+10;int p[N], vis[N], cnt;void sieve(int n) {vis[1] = 1;for(int i = 2; i <= n; i++) {if(!vis[i]) p[cnt++] = i;for(int j = 0; j < cnt && i <= n / p[j]; j ++ ) {vis[i * p[j]] = 1;if(i % p[j] == 0) break;}}
}int exgcd(int a, int b, int& x, int &y) {if(!b) {x = 1, y = 0;return a;}int res = exgcd(b, a%b, y, x);y -= a / b*x;return res;
}int cal(int a) {int res = 0;for(int i = 0; i<cnt && p[i] <= a / p[i]; i++) {if(a % p[i] == 0) {while(a % p[i] == 0) {res ++;a /= p[i];}}}if(a > 1) res ++;return res;
}int main() {sieve(1e5+5);int T;scanf("%d", &T);while(T -- ) {int a, b, k;scanf("%d%d%d", &a, &b, &k);int x, y;int gcd = exgcd(a, b, x, y);int minv = 2;if(a == gcd) minv --;if(b == gcd) minv --;int maxv = cal(a/gcd) + cal(b/gcd) + cal(gcd) * 2;if(a == b && k == 1) puts("NO");else if(maxv >= k && minv <= k) puts("YES");else puts("NO");}return 0;
}

cf 1538D - Another Problem About Dividing Numbers相关推荐

  1. 728. Self Dividing Numbers

    题目描述: A self-dividing number is a number that is divisible by every digit it contains. For example, ...

  2. leetcode-728-Self Dividing Numbers

    题目描述: A self-dividing number is a number that is divisible by every digit it contains. For example, ...

  3. C#LeetCode刷题之#728-自除数(Self Dividing Numbers)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3889 访问. 自除数 是指可以被它包含的每一位数除尽的数. 例如 ...

  4. Python 解leetcode:728. Self Dividing Numbers

    思路:循环最小值到最大值,对于每一个值,判断每一位是否能被该值整除即可,思路比较简单. class Solution(object):def selfDividingNumbers(self, lef ...

  5. CF 29A Spit Problem

    水题 #include <iostream>using namespace std;int main() {int n;int data[110][2];while(cin>> ...

  6. Codeforces Round #725 (Div. 3) 题解

    文章目录 A. Stone Game B. Friends and Candies C. Number of Pairs D. Another Problem About Dividing Numbe ...

  7. codeforces:ProblemMset

    最近一个月在codeforces上做的题(做个记录) 后面太多了就不把代码一一放出了,只放置了链接,可根据链接找到提交的代码. 最小子矩阵 #include <iostream> #inc ...

  8. CodeForces - 165E Compatible Numbers(SOSdp)

    题目链接:点击查看 题目大意:给出 nnn 个数,问能否在数列中找到一个数,满足 ai&aj=0a_i\& a_j=0ai​&aj​=0 题目分析:题目中的式子可以转换为,ai ...

  9. Codeforces Beta Round #51 D. Beautiful numbers 数位dp + 状态优化

    传送门 文章目录 题意: 思路: 题意: 思路: 数位dpdpdp挺经典的一个题辣,有一个很明显的状态就是f[pos][num][lcm]f[pos][num][lcm]f[pos][num][lcm ...

  10. Codeforces Round #112 (Div. 2) E. Compatible Numbers sosdp

    传送门 文章目录 题意: 思路: 题意: 思路: 以下假设all=1<<22all=1<<22all=1<<22. 转化问题,对于每个aia_iai​我们都计算x= ...

最新文章

  1. SAP Commerce的Runtime Attributes
  2. java有装箱和拆箱吗_Java中装箱和拆箱,你真的都懂么?
  3. Nodejs ejs模板引擎
  4. 消除文法左递归-编译原理
  5. C/C++:Windows编程—MFC基于CWnd自绘CListCtrl控件且带滚动条
  6. win2008 查询 tcp连接失败_TCP详解(转)
  7. 全球唯一!华为nova5系列:有望搭载全新7nmSoC
  8. KEIL, MDK 关于C99结构体变量初始化
  9. php安装oci8和pdo_oci扩展实现连接oracle数据库
  10. sqlserver2008r2通过发布和订阅的方式进行数据库同步
  11. (详解)CentOS 7+环境下PHP使用Imagick+ghostscript将PDF文件转为图片
  12. pytest文档71-pytest+yaml实现接口自动化框架
  13. android 7.1 字体大小设置,微信安卓版7.0.4字体大小被吐槽,微信官方回应又被吐槽...
  14. 【扯皮系列】一篇与众不同的 String、StringBuilder 和 StringBuffer 详解
  15. 中国社科中外合作办学双证博士创新与领导力管理学博士
  16. android adb pull 文件夹,android – 我如何adb拉SD文件夹中的所有文件
  17. CAS服务http的方式访问不了
  18. SpringAOP技术【松思园】
  19. ​韩剧影视剪辑30天5710元,短视频大神教你如何快速变现?
  20. 友盟+总裁罗金鹏:增长寒冬下,数据运营还能有哪些机会?

热门文章

  1. Python画爱心树源码
  2. 小象学院-人工智能机器学习
  3. html 套壳成桌面应用
  4. 函数的作用、函数的定义及函数的调用
  5. 谷歌hosts laod
  6. 【机器学习基础】EM算法
  7. 马陆计算机专业学校,“大路考”有变!智能化监考系统首次投入应用[图]
  8. 【ZYNQ】petalinux包含自定义的动态库
  9. 【一起来刷Python题】——09.解决熄灯问题
  10. 【Windows11+Ubuntu20.04】双系统安装及美化、优化记录