HDU 4497 GCD and LCM (数论)
2016-07-18 14:03
267 查看
题意:三个数x, y, z. 给出最大公倍数g和最小公约数l.求满足条件的x,y,z有多少组.
题解:设n=g/l n=p1^n1*p2^n2...pn^nk (分解质因数
那么x = p1^x1 * p2^x2 * .... ^ pn^xk
y = p1^y1 * p2^y2 * .... ^ pn^yk
x = p1^z1 * p2^z2 * .... ^ pn^zk
那么对于任意i (0<=i<=k) 都有 min(xi, yi, zi) = 0, max(xi, yi, zi) = ni
于是枚举每一个质因数的分配情况即可得出答案.
对于每一个i pi ni
有一个因子要为pi^ni 有一个因子要为pi^0
于是一共有(ni+1)^3(所有情况) - ni^3(没有0) - ni^3(没有ni) + (ni-1)^3(既没有0也没有ni) 中情况
枚举出所有小于根号n 的因数 如果 没有除尽 剩下的是一个大的质因数
感悟:
应该算是比较水的题
但是由于很少做数论的题
所以总会觉得是因为有什么定理不会 所以不愿意去思考
也无从下手
以后碰到lcm和gcd的题 知道了有一个角度是分解质因数
题解:设n=g/l n=p1^n1*p2^n2...pn^nk (分解质因数
那么x = p1^x1 * p2^x2 * .... ^ pn^xk
y = p1^y1 * p2^y2 * .... ^ pn^yk
x = p1^z1 * p2^z2 * .... ^ pn^zk
那么对于任意i (0<=i<=k) 都有 min(xi, yi, zi) = 0, max(xi, yi, zi) = ni
于是枚举每一个质因数的分配情况即可得出答案.
对于每一个i pi ni
有一个因子要为pi^ni 有一个因子要为pi^0
于是一共有(ni+1)^3(所有情况) - ni^3(没有0) - ni^3(没有ni) + (ni-1)^3(既没有0也没有ni) 中情况
枚举出所有小于根号n 的因数 如果 没有除尽 剩下的是一个大的质因数
感悟:
应该算是比较水的题
但是由于很少做数论的题
所以总会觉得是因为有什么定理不会 所以不愿意去思考
也无从下手
以后碰到lcm和gcd的题 知道了有一个角度是分解质因数
#include <bits/stdc++.h> using namespace std; int main() { freopen("in", "r", stdin); int T; cin >> T; while (T--) { int g, l; cin >> g >> l; if (l % g) { printf("0\n"); continue; } int n = l / g; int limit = (int) sqrt((double)n); int cnt, ans = 1; for (int i = 2; i <= limit; ++i) { if (n % i == 0) { cnt = 0; while (n % i == 0) { n /= i; cnt++; } ans *= cnt * 6; } } if (n > 1) ans *= 6; printf("%d\n", ans); } return 0; }
相关文章推荐
- EASYREC AN ERROR CCURRED!
- 面试题26:复杂链表的复制
- 前方高能!别让这10个设计误区毁了你的APP
- 极光推送集成步骤详解
- 可拖动GridView的实现,类似支付宝界面
- 大数相加
- mongodb 添加用户及权限设置详解
- require.js 学习基础
- Android系统启动逻辑02
- c++面试题经典
- 下载youtube的视频
- Arrays.asList转换数组为集合List对象
- Java:String、StringBuffer和StringBuilder的区别与使用。
- JDBC连接Informix IDS
- hdu4536-XCOM Enemy Unknown(爆搜)
- 为windows下的wamp安装ioncube
- # 类家族
- 富文本编辑器——关于PHP如何不断生成html页面并生成链接
- 浅谈h1到h6标签对seo的影响
- Mac 的 Vim 中 delete 键失效的原因和解决方案