一道简单模拟,1个小时40分钟没调出来
  • 板块学术版
  • 楼主hyb123bc
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/10/5 14:49
  • 上次更新2024/10/5 16:09:39
查看原帖
一道简单模拟,1个小时40分钟没调出来
929066
hyb123bc楼主2024/10/5 14:49
#include<bits/stdc++.h>
using namespace std;
inline __int128 read()
{
	__int128 f=1,sum=0;
	char c=getchar();
	while(!isdigit(c))
	{
		if(c=='-')
		{
			f=-1;
			c=getchar();
		}
	}
	while(isdigit(c))
	{
		sum=sum*10+c-'0';
		c=getchar();	
	}
	return sum*f;
}
__int128 a[105];
__int128 gcd(__int128 a,__int128 b)
{
	if(b==0)
	{
		return a;
	}
	return gcd(b,a%b);
}
void clg(__int128 &a,__int128 &b)
{
	__int128 c=gcd(a,b);
	a=a/c;
	b=b/c;
}
int main()
{
	__int128 p,q,n;
	p=read(),q=read(),n=read();
	p/=gcd(p,q),q/=gcd(p,q);
	for(int i=1;i<=n;i++)
	{
		a[i]=read();
	}
	__int128 ansp=1,ansq=a[n];
	for(int i=n-1;i;i--)
	{
		ansp=ansp+ansq*a[i];
		swap(ansp,ansq);
		clg(ansp,ansq);
	}
	if(ansp==q&&ansq==p||ansq==q&&ansp==p)
	{
		cout<<"YES";
		return 0;
	}
	cout<<"NO";
	return 0;
 } 
 

CF184 Div.2 B

2024/10/5 14:49
加载中...