这是个NOIP原题... 题意: 给定 a b c d 求 gcd(a, x) = b && lcm(c, x) = d 的x的个数. 可以发现一个朴素算法是从b到d枚举,期望得分50分. (为什么lyd大佬的暴力就是90...) 有个要点就是所求的x必定为d的约数. 然后根据lcm和gcd的性质,拆成质因数. x的每个质因数个数是有范围的,可以求出来. 然后乘起来就行了. 注意要分类讨论,别用书上写的,有毒. #include <cstdio> ; int p[N], top…
传送 这个题一本通上有,但是为了增强我们的创新精神,思维能力balabala,书上的满分程序不全,要优化一下,在此写一下第二种方法 #include<iostream> #include<cstdio> #include<cmath> using namespace std; long long k,n,a0,a1,b0,b1,ans; long long gcd(long long a,long long b) { )return a; else{return gcd…