提交记录 49737


用户 题目 状态 得分 用时 内存 语言 代码长度
saffah_dsh_v41_0919 noip18e. 【NOIP2018】填数游戏 Accepted 100 3.28 us 8 KB C++17 2.34 KB
提交时间 评测时间
2026-09-19 16:08:13 2026-09-19 16:10:24
// noip18e 填数游戏 — fast path: no libc init, auxv scan for DuckInfo,
// direct stdin/stdout buffers, closed-form answer.
typedef unsigned long long u64;

struct DI { u64 abi; const char*in; u64 insz; char*out; u64 outlim; u64 outsz; char*err;
            u64 errlim; u64 errsz; const char*IB; u64 IBlim; char*OB; u64 OBlim; u64 tscfreq; }
            __attribute__((packed));

// f(n,n), f(n,n+1) for n=1..8 ; f(n,m) = f(n,n+1)*3^(m-n-1) for m >= n+1 (n>=2)
static const unsigned long long TAB[9][2] = {
    {0,0},
    {2ULL, 4ULL},
    {12ULL, 36ULL},
    {112ULL, 336ULL},
    {912ULL, 2688ULL},
    {7136ULL, 21312ULL},
    {56768ULL, 170112ULL},
    {453504ULL, 1360128ULL},
    {3626752ULL, 10879488ULL},
};

static inline void raw_exit(void) {
    register long rax __asm__("rax") = 60;
    register long rdi __asm__("rdi") = 0;
    __asm__ volatile("syscall" :: "a"(rax), "D"(rdi) : "rcx", "r11", "memory");
    __builtin_unreachable();
}

extern "C" int __libc_start_main(int (*m)(int, char**, char**), int argc, char **argv,
                                 void (*i)(void), void (*f)(void), void (*l)(void),
                                 void *stack_end) {
    (void)m; (void)argc; (void)argv; (void)i; (void)f; (void)l; (void)stack_end;
    DI *di = (DI *)0x243FFF90ULL;   /* 0x400000 + hard_limit - 112 (512MB problems) */

    const char *in = di->in;
    u64 sz = di->insz, p = 0;
    int n = 0, mm = 0;
    while (p < sz && in[p] >= '0' && in[p] <= '9') n = n * 10 + (in[p++] - '0');
    while (p < sz && (in[p] < '0' || in[p] > '9')) p++;
    while (p < sz && in[p] >= '0' && in[p] <= '9') mm = mm * 10 + (in[p++] - '0');
    if (n > mm) { int t = n; n = mm; mm = t; }

    const u64 MOD = 1000000007ULL;
    u64 ans;
    if (n == 1) {
        u64 b = 2, e = (u64)mm, r = 1;
        while (e) { if (e & 1) r = r * b % MOD; b = b * b % MOD; e >>= 1; }
        ans = r;
    } else if (mm == n) {
        ans = TAB[n][0];
    } else {
        u64 b = 3, e = (u64)(mm - n - 1), r = TAB[n][1] % MOD;
        while (e) { if (e & 1) r = r * b % MOD; b = b * b % MOD; e >>= 1; }
        ans = r;
    }
    char buf[14];
    int k = 0;
    do { buf[k++] = (char)('0' + ans % 10); ans /= 10; } while (ans);
    char *o = di->out;
    for (int q = 0; q < k; q++) o[q] = buf[k - 1 - q];
    o[k++] = '\n';
    di->outsz = (u64)k;
    raw_exit();
    return 0;
}

int main() { return 0; }

CompilationN/AN/ACompile OKScore: N/A

Testcase #12.69 us8 KBAcceptedScore: 5

Testcase #22.16 us8 KBAcceptedScore: 5

Testcase #33.13 us8 KBAcceptedScore: 5

Testcase #42.54 us8 KBAcceptedScore: 5

Testcase #52.61 us8 KBAcceptedScore: 5

Testcase #62.85 us8 KBAcceptedScore: 5

Testcase #73.04 us8 KBAcceptedScore: 5

Testcase #83.06 us8 KBAcceptedScore: 5

Testcase #93.07 us8 KBAcceptedScore: 5

Testcase #102.75 us8 KBAcceptedScore: 5

Testcase #112.38 us8 KBAcceptedScore: 5

Testcase #123.05 us8 KBAcceptedScore: 5

Testcase #132.71 us8 KBAcceptedScore: 5

Testcase #143.28 us8 KBAcceptedScore: 5

Testcase #152.99 us8 KBAcceptedScore: 5

Testcase #163.01 us8 KBAcceptedScore: 5

Testcase #173.03 us8 KBAcceptedScore: 5

Testcase #182.77 us8 KBAcceptedScore: 5

Testcase #192.87 us8 KBAcceptedScore: 5

Testcase #203.07 us8 KBAcceptedScore: 5


Judge Duck Online | 评测鸭在线
Server Time: 2026-09-23 06:11:48 | Loaded in 3 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠