首页 > TAG信息列表 > Hankson
Hankson的趣味题
code #include<algorithm> #include<iostream> #include<cstdio> using namespace std; int gcd(int a,int b){ return b==0?a:gcd(b,a%b); } int main(){ ios::sync_with_stdio(false); int a0,a1,b0,b1,i,ans,k; cin>>k; while(k--){ //TODO题解 P1072 【Hankson 的趣味题】
P1072 Hankson 的趣味题 题目大意: 求有多少个 \(x\) 满足: \[\gcd(x,a_0)=a_1,\text{lcm}(x,b_0)=b_1 \] solution: 首先我们探究一些性质:设\(x=k_1\times a_1,a_0=k_2\times a_1\) ,且 \(\gcd(k_1,k_2)=1\) 。 证明: 若 \(\gcd(k_1,k_2)\not=1\),设 \(\gcd(k_1,k_2)=d\) ,则有 \(k_1=P1072 [NOIP2009 提高组] Hankson 的趣味题
Rose \(O(\sqrt n)\)也是可以接受的对吧 化简式子得\(gcd(\frac{x}{a_1},\frac{a_o}{a_1})=1\)和\(gcd(\frac{b_1}{x},\frac{b_1}{b_0})=1\) 然后枚举\(b_1\)的因子就可以了 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namP1072 [NOIP2009 提高组] Hankson 的趣味题
Description 给定 n ( n ≤ 2 × 1 0Hankson的趣味题--acwing(快速求一个数的所有约数)
题目:https://www.acwing.com/problem/content/202/可能需要报名课程才能做。 题意:给a,b,c,d四个数,范围是1–2e9,求x和a的最大公约数是b,x和c的最小公倍数是d,满足条件的x有多少个。首先输入一个n,代表n组数据,n的范围是1-2000 题解:这个题其实就找d的所有约数,然后枚举每一个约数就行,int洛谷 P1072 Hankson 的趣味题(数学||唯一分解定理)
题目链接:https://www.luogu.com.cn/problem/P1072 更高效: 预处理的质数中从2~$\sqrt(d)$,检查每一个质数是不是d的约数,如果是,按上述方法计算$cnt_p$。如果d不能被上述所有的质数整除,则说明d本身是质数,应该计算$cnt_d$。 AC代码: 1 #include<cstdio> 2 #include<Hankson 的趣味题sol
Hankson 的趣味题 简单推一下式子,发现\(gcd(x/a1,a0/a1)=1,gcd(b1/b0,b1/x)\) 直接枚举会超时 设\(x=k*a1\)则\(k|(b1/a1)\),枚举\(b1/a1\)的约数就可以了 #include<bits/stdc++.h> #define fi first #define se second #define pb push_back #define mp make_pair #define SZ(x)AcWing200 Hankson的趣味题(数学)
这题我们很容易想到可以先求出x的取值,再进行比对看看是否可以 但是如果我们直接求出所有x的取值复杂度会超,因为求约数的复杂度较高 所以我们考虑先求去所以质因数,再通过dfs来求约数 之后进行比对即可。 #include<iostream> #include<string> using namespace std; typedef long洛谷1072:Hankson的趣味题
洛谷1072:Hankson的趣味题 题意: 有: \(gcd(x,a_0)=a_1\) \(lcm(x,b_0)=b_1\) 给定\(a_0,a_1,b_0,b_1\),问满足上述等式的\(x\)有多少个? 思路: \(gcd(x,a_0)=a_1,gcd(\frac{x}{a_1},\frac{a_0}{a_1})=1\)。 \(lcm(x,b_0)=b_1,lcm(x,b_0)=\frac{x*b_0}{gcd(x,b_0)}\). \(b_1=\fracAcwing200 Hankson的趣味题
原题面:https://www.acwing.com/problem/content/202/ 题目大意:gcd(x,a0)=a1,lcm(x,b0)=b1,问你有多少满足条件的正整数x。 输入描述:t组输入,第一行一个整数t,代表测试数据的组数。接下来t行,每行四个整数,a0,a1,b0,b1。 输出描述:对于每组测试数据,输出满足条件的x的个数。 输入样例: 2洛谷P1072 Hankson 的趣味题
题目 x和\(a_0\)的最大公约数是\(a_1\) x和\(b_0\)的最小公倍数是\(b_1\) \(gcd(x,a_0)=a_1\) \(gcd(x/a_1,a_0/a_1)=1\) \(\tag{1}\) \(lcm(x_1,b_0)=b_1\) \(\frac{x*b_0}{gcd(x,b_0)}=b_1\) \(gcd(x,b_0)=\frac{x*b_0}{b_1}\) \(gcd(x/\frac{x * b_0}{b_1},b_0/\fr1626:【例 2】Hankson 的趣味题
1626:【例 2】Hankson 的趣味题题解 【题目描述】 Hanks 博士是 BT(Bio-Tech,生物技术)领域的知名专家,他的儿子名叫 Hankson。现在,刚刚放学回家的 Hankson 正在思考一个有趣的问题。 今天在课堂上,老师讲解了如何求两个正整数 c1 和 c2 的最大公约数和最小公倍数。现在 Hankson 认为自洛谷P1072 Hankson的趣味题
洛谷P1072 Hankson的趣味题题目题目描述输入输出格式输入格式输出格式输入输出样例输入样例输出样例题解 题目 题目描述 原题 Hanks博士是 BT(Bio-Tech,生物技术)领域的知名专家,他的儿子名叫Hankson。现在,刚刚放学回家的Hankson正在思考一个有趣的问题。 今天在课堂上,老师讲P1072 Hankson 的趣味题
原题链接 https://www.luogu.org/problemnew/show/P1072 这个题是数论+暴力吧,需要一些优化。 先来看看怎么求最大公约数和最小公倍数: 欧几里德算法 ------求最大公约数 概述 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理: gcdP1072 Hankson 的趣味题
#include<bits/stdc++.h> #define ll long long using namespace std; int n; ll a0, a1, b0, b1; int main() { cin >> n; while(n--) { cin >> a0 >> a1 >> b0 >> b1; ll ans = 0; for(ll i = 1; i *