E. Easy Measurements(解不定方程)

Posted issue是fw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了E. Easy Measurements(解不定方程)相关的知识,希望对你有一定的参考价值。

LINK

由题意得

( a b + c d ) ∗ d = b (\\frac{a}{b}+\\frac{c}{d})*d=b (ba+dc)d=b

化简一下得到 a = b 2 − b c d a=\\frac{b^2-bc}{d} a=db2bc

已知 b , d b,d b,d,所以只需要求存在多少个 c c c使得 b 2 − b c b^2-bc b2bc d d d的倍数即可

b 2 − b c b^2-bc b2bc可以取 ( 0 , b 2 ) (0,b^2) (0,b2)中所有是 b b b倍数的数,而且这个数必须是 d d d的倍数

那么答案是 b 2 − 1 l c m ( b , d ) \\frac{b^2-1}{lcm(b,d)} lcm(b,d)b21

#include <iostream>
using namespace std;
int gcd(int a,int b){return b==0?a:gcd(b,a%b); }
long long lcm(long long a,long long b){ return a*b/gcd(a,b); }
int main()
{
	int t; cin >> t;
	while( t-- )
	{
		long long  b,d; cin >> b >> d;
		cout << (b*b-1)/lcm(b,d) << endl;
	}
}

以上是关于E. Easy Measurements(解不定方程)的主要内容,如果未能解决你的问题,请参考以下文章

The 17th Zhejiang Provincial Contest E. Easy DP Problem(主席树)

扩展欧几里得算法(解不定方程)

深入浅出学算法006-求不定方程的所有解

容斥原理解一般不定方程——cf451E经典题

ex_gcd求不定方程的最小正整数解

数论不定方程&&中国剩余定理