题目大意:现在有两种物品,一种是原件,一种是复印件。同时你可以选择对原件或者复印件进行操作。如果你选择一件原件进行操作,那么操作之后在保留原件的前提下你还能获得一件原件和一件复制品。如果你选择对一件复制品进行操作,那么你会得到两件复制品。现在你拥有一件原件,在有限次操作后,你能否得到xx件原件和件复印件。
思路:简单模拟
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MOD = 1e9 + 7;
const ll MAXN = 1e5;
ll qpow(ll a, ll n)
{
ll res = 1;
while (n)
{
if (n & 1)res = res*a%MOD;
a = a*a%MOD;
n >>= 1;
}
return res;
}
int main()
{
ll x, y;
cin >> x >> y;
if (y == 1 && x == 0)puts("Yes");
else if (y == 1 && x != 0)puts("No");
else if (y == 0)puts("No");
else if (y > 1)
{
if (x == 0)puts("No");
else if ((x - (y - 1)) % 2 == 1 || (x - (y - 1)) < 0)puts("No");
else puts("Yes");
}
}
本文解析了一个简单的模拟算法问题,探讨了如何通过有限次数的操作从一件原件出发获得指定数量的原件和复印件。文章提供了完整的C++代码实现,并给出了判断是否能够达到目标状态的逻辑。
338

被折叠的 条评论
为什么被折叠?



