90pts求调 WA on test 8 有数据
查看原帖
90pts求调 WA on test 8 有数据
265204
CWzwz楼主2024/9/5 22:22
// Problem: 
#include<iostream>
#include<stdio.h>
#include<cstdarg>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
#include<string.h>
#define Int int
#define inf (1000000000)
#define INF (2000000000000000000ll)
#define pii std::pair<int, int>
#define pll std::pair<long long, long long>
#define pb emplace_back
#define fore(i,u,v) for(int i=head[u],v=e[i].v;i;i=e[i].nxt,v=e[i].v)
#define gmin(x, y) x=std::min(x, (y))
#define gmax(x, y) x=std::max(x, (y))
typedef long long ll;
int Memoryst;
ll mod = 1e9 + 7;
namespace IO {
    ll read() {
        ll x = 0, f = 1;char ch = getchar();
        while(ch < '0' || ch > '9') {if(ch == '-') f = -1; ch = getchar();}
        while(ch >= '0' && ch <= '9') x = (x << 1) + (x << 3) + (ch ^ 48), ch = getchar();
        return x * f;
    }
    template <typename T>
    void read(T &x) {x = read();}
    template <typename T>
    void PRTNUM(T x) {
        if(x < 0) putchar('-'), x = -x;
        if(x > 9) PRTNUM(x / 10);
        putchar(x % 10 + 48);
    }
    template <typename T>
    void print(T x) {
        if(std::is_same<char, T>::value) putchar(x);
        else PRTNUM(x);
    }
    template <typename T, typename ...Args>
    void read(T &tmp, Args &...tmps) {read(tmp); read(tmps...);}
    template <typename T, typename ...Args>
    void print(T tmp, Args ...tmps) {print(tmp); print(tmps...);}
    char gc(){char c=getchar();while(c==' '||c=='\n')c=getchar();return c;}
}
using namespace IO;

ll n;
ll cnt[26];

ll fact(ll x) {
    ll res = 1;
    for(ll i = 2; i <= x; i++) res = res * i % mod;
    return res;
}
ll qpow(ll x, ll y) {
    ll res = 1;
    for(; y; y >>= 1, x = x * x % mod) if(y & 1) res = res * x % mod;
    return res;
}

int Memoryed;
int main() {
    // fprintf(stderr, "%.1lfMB\n", (&Memoryst - &Memoryed) / 262144.0);
    read(n);
    for(int i = 1; i <= n; i++) cnt[gc() - 'a']++;
    ll odd = 0;
    for(int i = 0; i < 26; i++) {
        if(cnt[i] & 1) {
            if(odd == 0) odd = i;
            else {
                odd = -1;
                break;
            }
        }
    }
    ll ans = fact(n);
    if(odd == -1) {
        print(ans, '\n');
        return 0;
    }
    // if(odd) cnt[odd]--;
    // for(int i = 0; i < 26; i++) {
    //     print(cnt[i], ' ');
    // }
    ll deans = fact(n / 2);
    for(int i = 0; i < 26; i++) {
        deans = deans * qpow(fact(cnt[i] / 2), mod - 2) % mod;
    }
    // print(deans, '\n');
    for(int i = 0; i < 26; i++) {
        // print(cnt[i], ' ');
        deans = deans * fact(cnt[i]) % mod;
    } // puts("");
    // print(deans, '\n');
    // print(ans, '\n');
    print((ans + mod - deans) % mod, '\n');
    return 0;
}

WA on test 8

input

1998
baaaabbbabbaaabaaababbbaaaaabbbabaaaabbbaabaabaabaabbaabbababaabaaaaaababbbbaabaaabaabbabbbbabbbaabaabaaabbbabbbaaaaabbabbaaabbbbaabbabababaabbbabbbaabbaabbbabbbbaaababbaaabbbbbbaaaaaaaaaaaaaaababbbaaaabbbaaabaaabbbabaaababbaabbbabbaaabbababbabaabbbbaabaaaabbbaabababbbbbbbabababaaaaabaaaaabbabbabbbaaababbababbaaaabbbaaaabbbaaabaaaabbabbbbbbabbaaabbbbabbababbbababaaabaabaaaaababbbababababbbaaabaaabbaabbbaababbbaaaabbbabababbbbaabbabbababaaababababaaaaabaabbbaaabaaaaaabbbbbaaabbbbaabbaaabbbabbabaabaababbbbbbbbabbbaabbababaabababbbbabaaababbbbababbababbaabaaabbaabbababaabbabbabbaabaaabbabbbbbabbbabbbaabbabbaabbbbaaabaabbabbbaaababbbbabbabbabbaabaabbbaaababaaaaabbbbbbabababaaaababaabbbabaabaabbbabaaabbaaabbaaabaaabababbaabbaaabbabbbbabaaabaaaabaaabaaaaabbabbabbbababbbaaababbbbbbbbababbaaaaaaaabbbaababaababbaaababaabbabbaaabbabbaabbababaabaabaabbabaaaaabbbababbbaaaaabaabaaabbaaabbaabaabbaababbaabbaabbaaabbaabaaaaabbbbaababaabaaaabbbabbaaabbabaabbababaabbbbbabbbbaaaabaaabaabaabbbaaabaabaabbbabbabaabbbbbbbbbaaaabbabbaabbbabbaaaaaaaabaaaabbaaaaabbbabababababaabbbbabababaaaabaabaaababbaaabaaaabaabaaabaababbbbababbbbabbaaaaabbbbbbbbaabbbbaaabbabaaabaaaababbbbbabbbbbaababbbbbbbaabababbbbbbbabaabbbbabbaaabbbbabbabbabbbaababaaaaaababaabaaaabababbaababbaaaaaabbabbbaabaabbaaabbbaabaabaaabbaaabbabbbbaaaabaaaabbabaabaabbaabaabbbaabaaabbaababaabaaabbaabbababaaaabababaaabaabbbbaabbbabaabaabaabaabbbabbaaaaabaababbbbaaabbabaabaabaabbbaaaaabbbbbbbaaabbabababbaaabaabbaaaababaabbbbaaaabbabaabbbaababbbabbbababbabbaabbbbabbbabaabbbbabbabbababbbbbabaabbbaabaabbaaaaabbbbaaaaaaabbaabaabbbbbbbbaababbbababbbaababbbbababaaabbbabbbabbbbaaabaabbbabbbbbbbabababbaaabbaabbbbaaabbaaabbababbabaaaabaabbbabbbbaabbbaababaabbaaabababbbbbabaaaaaaaaabbbbaaabbaabaabaababaaaaabaabbaaabbbbabbabbaabbaaaabbabbaaaaabbbaaababbabaabaaabbaaaaaaabbabbaaabbbabbabbbaaabababbbaaabaabbaabaabbababbaaaababbbbabaaababbbababaabababbabbaabbbababaaabbaaaababbbbbaaabaaabbababbabbbaabbbbbbbbbababaaabbbbbaabbbbbaaabbaabbbbbbbaaaba

answer

652876718
2024/9/5 22:22
加载中...