题解 |

Gcd

https://ac.nowcoder.com/acm/contest/57360/G

和高等代数有关

注意事项

  • 集合中没有重复的元素。
  • 要特判 00 初始在集合中的情况

结论在 zzzyx0y0z \ne z \land z\ne y \land x \ne 0 \land y\ne 0 , 的情况下 可以通过一些操作使 zz 在集合中出现

的充要条件是 zmodgcd(x,y)=0z \bmod \gcd(x,y) = 0

证明如下:

d=gcd(x,y)d = gcd(x,y) 一定存在正整数 k1,k2k1, k2 使得 x=k1×d,y=k2×dx = k1 \times d, y = k2\times d

可以通过一次操作使得集合中存在 dd,从而 d,2d,3d,..max(k1,k2)×dd, 2d, 3d,..\max(k1,k2)\times d

存在集合中。由于 xyx \ne y 从而 d,2dd, 2d 一定可以存在集合中,从而可以把d-d

加入集合。由于 zmodd=0z \bmod d = 0, 可以设 z=k3×dz = k3\times d。 故可能通过若干操作使得

zz 出现在集合中。

void solve(){
    int x, y, z;
    cin >> x >> y >> z;
    int d = __gcd(x, y);
    if (x == z || y == z) {
        cout << "YES\n";
        return;
    }
    if (x == 0 || y == 0 || z == 0) {
        cout << "NO\n";
        return;
    }
    if (z % d == 0) cout << "YES\n";
    else cout << "NO\n";
}


全部评论

相关推荐

迷茫的大四🐶:能不能好好排个版,谁会看这么长的简历啊,说明书吗
校招求职吐槽
点赞 评论 收藏
分享
11-13 20:16
已编辑
厦门理工学院 软件测试
专业嗎喽:硕佬,把学校背景放后面几段,学校背景双非还学院,让人看了就不想往下看。 把实习经历和个人奖项放前面,用数字化简述自己实习的成果和掌握的技能,比如负责项目一次通过率90%,曾4次发现项目潜在问题风险为公司减少损失等等
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务