社区讨论
一道简单模拟,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 条回复,欢迎继续交流。
正在加载回复...