#include #include typedef struct { long long nume; long long deno; } frac; long long a[10],target; int n; frac num[10]; long long gcd(long long p,long long q){return q?gcd(q,p%q):p;} void fr_op(frac t0,frac t1,frac* ans,int op){ long long deno,nume,d; switch(op){ case 0://足し算 deno=t0.deno*t1.deno; nume=t0.nume*t1.deno+t1.nume*t0.deno; break; case 1://掛け算 deno=t0.deno*t1.deno; nume=t0.nume*t1.nume; break; case 2://割り算1 deno=t0.deno*t1.nume; nume=t0.nume*t1.deno; break; case 3://割り算2 deno=t0.nume*t1.deno; nume=t0.deno*t1.nume; break; case 4://引き算 if(t0.deno*t1.nume1;i--){ target=a[i]; if(check(num,i)){puts("YES");return 0;} //{a[k]|1<=k<=i-1}からa[i]が作れるか調べる } puts("NO"); return 0; }