QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#584804#9376. GameyywxdgyTL 0ms3812kbC++141.3kb2024-09-23 16:50:162024-09-23 16:50:17

Judging History

你现在查看的是最新测评结果

  • [2024-09-23 16:50:17]
  • 评测
  • 测评结果:TL
  • 用时:0ms
  • 内存:3812kb
  • [2024-09-23 16:50:16]
  • 提交

answer

#include <iostream>
#include <cstdio>
#include <string.h>
const int mod = 998244353;
using namespace std;

#define gc() getchar()
inline int read() {
    char c = gc(); int s = 0;
    for (; !isdigit(c); c = gc());
    for (; isdigit(c); c = gc()) s = s * 10 + c - 48;
    return s;
}

inline int mul(int a, int b) { return 1ll*a*b%mod; }
inline int add(int a, int b) { return a + b >= mod ? a + b - mod : a + b; }
int Power(int a, int b) {
    int ans = 1;
    for (; b; b >>= 1) (b & 1 ? ans = mul(ans, a) : 0), a = mul(a, a);
    return ans;
}
int a1, a2, b, P, Q;
int X, Y;
int fun(int x, int y) {
    if (x == y) return P;
    if (x == 1) return Power(P, y);
    if (x < y) return mul(Power(P, (y - 1) / x), fun(x, y - (y - 1) / x * x));
    int a = x / y, sum = 0;
    for (int i = 0; i < a; ++i) sum = add(sum, Power(Q, i));
    sum = mul(P, sum);
    if (y == 1) return sum;
    return mul(sum, mul(Power(Q, a), fun(x - x / y * y, y)));
}
void Work() {
    X = read(), Y = read();
    a1 = read(), a2 = read(), b = read();
    P = mul(a1, Power(add(a1,a2), mod - 2));
    Q = mul(a2, Power(add(a1,a2), mod - 2));
    printf("%d\n", fun(X, Y));
}
int main() {
    int T; cin >> T;
    while (T --) Work();
    return 0;
}
/*
3
1 1
2 2 6
1 3
2 3 6
3 4
7 3 15

*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3812kb

input:

3
1 1
2 2 6
1 3
2 3 6
3 4
7 3 15

output:

499122177
910398850
220911476

result:

ok 3 lines

Test #2:

score: -100
Time Limit Exceeded

input:

100000
1 1000000000
12980050 128257807 266126484
1 1000000000
400255084 123438563 768881284
1000000000 1000000000
24563487 72082135 450057094
1 1000000000
56952077 40876000 193815114
1000000000 1000000000
82048274 239365585 326520865
1000000000 1
309821265 346013425 963168258
1 1
104158269 199365020...

output:


result: