zoukankan      html  css  js  c++  java
  • 牛客挑战赛46

    牛客挑战赛46

    a 奇怪的计算器

    c/c++作业题

    int get(char c) {
        if (c == '-') return 0;
        else if (c == '+') return 1;
        return 2;
    }
     
    int main() {
        IOS; string s; cin >> s;
        stack<ll> st, op;
        ll a = 0;
        bool g = 0;
        for (auto i : s) {
            if (isdigit(i)) { g = 1; a = a * 10 + (i ^ '0'); continue; }
            if (g) st.push(a), a = g = 0;
            int c = get(i);
            if (op.empty()) op.push(c);
            else {
                while (!op.empty() && (op.top() == 2 || c < 2)) {
                    ll x = st.top(); st.pop();
                    ll y = st.top(); st.pop();
                    if (op.top() == 0) st.push(y - x);
                    else if (op.top() == 1) st.push(y + x);
                    else st.push(y ^ x);
                    op.pop();
                } op.push(c);
            }
        }
        if (g) st.push(a);
        while (!op.empty()) {
            ll x = st.top(); st.pop();
            ll y = st.top(); st.pop();
            if (op.top() == 0) st.push(y - x);
            else if (op.top() == 1) st.push(y + x);
            else st.push(y ^ x);
            op.pop();
        }
        cout << st.top();
        return 0;
    }
    

    b 最小的指数

    让我想起了2020ccpc威海的D, 1e18拆成3个1e6

    然而这道题不行, T=1e5, 那就大概拆成 1e4 和 1e4~1e18

    把1e4内的质数筛出来, 每次先把x, 变成1或者 >1e4 的数

    对于剩下的数大于 1e4 的剩下的答案无非是 1,2,3,4

    对于2,4, 开两次根号算一下, 对于3, 二分找一下(1e4~1e6), 找不到2,3,4, 那剩下的数必定是个质数 ans = 1

    void init() {
        rep (i, 2, 1e4) {
            if (!v[i]) prime[++tot] = i;
            rep (j, 1, tot) {
                if (i * prime[j] > 1e4) break;
                v[i * prime[j]] = 1;
                if (i % prime[j] == 0) break;
            }
        }
    }
     
    bool check(ll n) {
        ll l = 1e4, r = 1e6;
        while (l <= r) {
            ll mid = l + r >> 1, c = mid * mid * mid;
            if (c > n) r = mid - 1;
            else if (c < n) l = mid + 1;
            else return 1;
        }
        return 0;
    }
     
    int main() {
        IOS; init();
        for (cin >> _; _; --_) {
            ll x; cin >> x;
            if (x == 1) { cout << "0
    "; continue; }
            int ans = 2e9;
            rep (i, 1, tot) {
                int cnt = 0;
                while (x % prime[i] == 0) x /= prime[i], ++cnt;
                if (cnt) umin(ans, cnt);
            }
            if (x >= 1e4) {
                ll a = sqrt(x), b = sqrt(a);
                if (a * a == x) umin(ans, b * b == a ? 4 : 2);
                else if (check(x)) umin(ans, 3);
                else ans = 1;
            }
            cout << ans << '
    ';
        }
        return 0;
    }
    

    C

    dp, 不会

    D

    hash, 把数字当成进制, 找状态一样的集合就行了

    int cnt[N];
    ull f[2][N];
    vector<pair<ull, ull>> s;
    
    int main() {
        IOS; srand(time(NULL));
        cin >> n >> k; f[0][0] = f[1][0] = 1;
        rep (i, 1, n) f[0][i] = f[0][i - 1] * 131, f[1][i] = f[1][i - 1] * 13331;
        ull a = 0, b = 0; s.pb({ 0 , 0 });
        rep (i, 1, n) {
            cin >> m; a += f[0][m], b += f[1][m], ++cnt[m];
            if (cnt[m] == k) a -= f[0][m] * k, b -= f[1][m] * k, cnt[m] = 0;
            s.pb({ a, b });
        }
        sort(all(s)); ll ans = 0;
        for (int i = 0, j; i < n; i = j) {
            for (j = i + 1; j <= n && s[i] == s[j]; ++j);
            ans += (ll)(j - i) * (j - i - 1) >> 1;
        }
        cout << ans;
        return 0;
    }
    
  • 相关阅读:
    JS解析JSON 注意事项总结
    Jquery 绑定标签事件
    System.Globalization.CultureInfo.InvariantCulture 解决不同地域字符串格式不同问题
    c# HttpWebRequest 模拟HTTP post 传递JSON参数
    Django REST framework (DRF) 不能用property或method排序
    django filters TypeError __init__() got an unexpected keyword argument 'lookup_type'
    DRF(Django Rest Framework)备忘
    测试服务器
    还款计算-复式记账
    Django 相关内容blog备忘
  • 原文地址:https://www.cnblogs.com/2aptx4869/p/14131972.html
Copyright © 2011-2022 走看看