CF995E Number Clicker
Number Clicker
题面翻译
小 y 在玩数学游戏,他有三种变化方式:
- 将该数
; - 将该数
- 将该数变成他的逆元(即
次幂),当然,我们所有操作都是在 意义下的
现在小 h 知道了变换前的数
Solution
尝试去找了一下三种操作之间有什么规律,然后发现确实没什么规律……
考虑构造一种操作,使它与题目要求的变化方式等价。由于存在逆元,所以我们将这个数表示成为
因为操作
初始的
复杂度
Code
// Cirno is not baka!
#include <bits/stdc++.h>
#define For(i, a, b) for (int i = (a); i <= (int)(b); ++i)
#define Rof(i, a, b) for (int i = (a); i >= (int)(b); --i)
#define All(x) x.begin(), x.end()
#define pii pair<int, int>
#define fi first
#define se second
#define i64 long long
#define mkp make_pair
// #define int long long
#define epb emplace_back
using namespace std;
const int _N = 1e6 + 5, inf = 1e9;
template<typename T> void Max(T &x, T y) {x = max(x, y);}
template<typename T> void Min(T &x, T y) {x = min(x, y);}
#ifdef CIRNO
template<typename T> void Debug(T x) {cerr << x << '\n';}
template<typename T, typename ...Args> void Debug(T x, Args ...args) {cerr << x << ' '; Debug(args...);}
template<typename T> void Debug(vector<T> v) {for (T x: v) cerr << x << ' '; cerr << '\n';}
#else
#define Debug(...)
#endif
namespace BakaCirno {
mt19937 rnd(9);
#define Rand(l, r) uniform_int_distribution<>(l, r)(rnd)
int A, B, mod;
int Calc(int a, int b) {
if (b == 0) return 0;
return Calc(b, a % b) + a / b + 1;
}
vector<int> GetPath(int a, int b) {
vector<int> res;
while (b) {
if (a < b) res.epb(3), swap(a, b);
else res.epb(2), a -= b;
}
return res;
}
void _() {
cin >> A >> B >> mod;
while (true) {
int v1 = Rand(1, mod - 1), v2 = Rand(1, mod - 1);
if (Calc(1ll * v1 * A % mod, v1) + Calc(1ll * v2 * B % mod, v2) <= 200) {
vector<int> r1 = GetPath(1ll * v1 * A % mod, v1),
r2 = GetPath(1ll * v2 * B % mod, v2);
reverse(All(r2));
cout << r1.size() + r2.size() << '\n';
for (int x: r1) cout << x << ' ';
for (int x: r2) cout << (x < 3 ? 3 - x : 3) << ' ';
cout << '\n';
break;
}
}
}
}
void File(const string file) {
freopen((file + ".in").c_str(), "r", stdin);
freopen((file + ".out").c_str(), "w", stdout);
}
signed main() {
// File("");
cin.tie(0)->sync_with_stdio(0); int T = 1;
// cin >> T;
while (T--) BakaCirno::_();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步