8 条题解
-
0
我相信,我的算法,终有一天,他会将时间复杂度增加到极限
template <class _Tp = const unsigned long long int> class P { _Tp *p { nullptr }; }; signed WinMain(int argv, char argc[]) {} #pragma GCC system_header #include <cstdio> #include <ctype.h> typedef unsigned long long ULL; int add(int a, int b) { if (!a) return b; return add((a & b) << 1, a ^ b); } ULL quick_mul(int a, int b) { ULL res = 0; for (ULL t = a; b; b >>= 1, t <<= 1) if (b & 1) res = add(res, t); return res; } ULL square(int a) { return quick_mul(a, a); } int read() { char ch; int res = 0; while (!isdigit(ch = getchar())); res = ch ^ 48; while (isdigit(ch = getchar())) res = add(quick_mul(res, 10), ch ^ 48); return res; } int binary_div(int a, int b) { int left = -1, right = add(1ll << 31, 0xffffffff); while (left + 1 != right) { int mid = add(left, right) >> 1; if (quick_mul(b, mid) <= a) left = mid; else right = mid; } return left; } int mod(int a, int b) { return a - quick_mul(binary_div(a, b), b); } void print(int a) { if (!a) return; print(binary_div(a, 10)); putchar(mod(a, 10) ^ 48); } int comp(int a, int b) { return add(add(a <= b, a == b), 1); } signed main(int argv, char argc[]) { int a = read(), b = read(); print(binary_div(50, a)); putchar(' '); print(binary_div(50, b)); puts(""); print(comp(a, b)); return 0; }
信息
- ID
- 30
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 43
- 已通过
- 33
- 上传者