zoukankan      html  css  js  c++  java
  • HDU

    http://acm.hdu.edu.cn/showproblem.php?pid=5651

    题意:生成回文串。输出所有回文串的可能数。

    题解:mod除法会损失高位,用逆元来代替除法,模板如下

    ac代码:

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<string>
    
    using namespace std;
    const int maxn = 1111;
    int num[maxn];
    //char s[maxn];
    typedef long long ll;
    const int mod = 1e9 + 7;
    ll f[maxn];
    void init() {
        f[1] = 1; f[0] = 1;
        for (int i = 2; i < maxn; i++)
            f[i] = f[i - 1] * i%mod;
    }
    ll cal(ll x) {
        ll res = 1;
        int k = mod - 2;
        while (k) {
            if (k & 1) {
                res *= x;
                res %= mod;
            }
            x*=x;
            x %= mod;
            k >>= 1;
        }
        return res;//cal(x^ mod)
    }
    int main() {
        int t;
        init();
        cin >> t;
        while (t--) {
            memset(num, 0, sizeof(num));
            string s;
            cin >> s;
            int n = s.length();
    
            for (int i = 0; i < n; i++) {
                num[s[i]]++;
    
            }
            int cnt = 0;
            for (int i = 'a'; i <= 'z'; i++) {
                if (num[i] & 1) cnt++;
            }
            if (cnt > 1) {
                cout << 0 << endl; continue;
            }
            int sum = 0;
            for (int i = 'a'; i <= 'z'; i++) {
                num[i] /= 2;
                sum += num[i];
            }
            ll res = f[sum];
            for (int i ='a'; i <='z'; i++)if(num[i]) {
                res = res*cal(f[num[i]]) % mod;
            }
            cout << res<<endl;
            
        }
    }
    成功的路并不拥挤,因为大部分人都在颓(笑)
  • 相关阅读:
    SQL学习记录
    Python 函数和变量作用域
    Python 使用socket实现一对多通信
    Flask wtforms validate_on_submit() 无法返回值问题
    Flask WTForm BooleanField用法
    Python3 中的nonlocal用法
    Python 实现二进制循环效果
    Python 各种类型转换
    第一章:数据结构
    Python Challenge
  • 原文地址:https://www.cnblogs.com/SuuT/p/8560835.html
Copyright © 2011-2022 走看看