社区讨论

一道简单模拟,1个小时40分钟没调出来

学术版参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@m1vsnaag
此快照首次捕获于
2024/10/05 14:49
去年
此快照最后确认于
2025/11/04 18:00
4 个月前
查看原帖
CPP
#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

回复

3 条回复,欢迎继续交流。

正在加载回复...