E. Easy Measurements(解不定方程)
Posted issue是fw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了E. Easy Measurements(解不定方程)相关的知识,希望对你有一定的参考价值。
由题意得
( 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=db2−bc
已知 b , d b,d b,d,所以只需要求存在多少个 c c c使得 b 2 − b c b^2-bc b2−bc是 d d d的倍数即可
b 2 − b c b^2-bc b2−bc可以取 ( 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)b2−1
#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(主席树)