题解 CF305B 【Continued Fractions】
这题肯定不能暴力,精度太低。
我们考虑记录分子和分母。
如果最后结果分子和分母都对应相等,那我们就认为正确。
记得将P,Q也约分好。
约分就是将两个数同时除以他们的Gcd。
答案呼之欲出。
#include<bits/stdc++.h> using namespace std; typedef long long Ll; Ll P,Q; Ll Total; Ll Array[101]; inline Ll GetGcd(Ll A,Ll B) { return B==0?A:GetGcd(B,A%B); } inline void Offset(Ll &A,Ll &B) { register Ll Gcd; Gcd=GetGcd(A,B); A/=Gcd; B/=Gcd; } int main(void) { register int i; cin>>P>>Q; cin>>Total; for(i=1;i<=Total;i++) { cin>>Array[i]; } Offset(P,Q); register Ll AnsA,AnsB; AnsA=Array[Total]; AnsB=1; for(i=Total-1;i>=1;i--) { Offset(AnsA,AnsB); swap(AnsA,AnsB); AnsA=Array[i]*AnsB+AnsA; } if(P==AnsA&&Q==AnsB) { cout<<"YES"<<endl; } else { cout<<"NO"<<endl; } return 0; }
不要妄图追上西坠的太阳,而是要在黎明前就等着它!