zoukankan      html  css  js  c++  java
  • HackerRank

    All about pruning and duplication removal. Took me several submissions to get it AC:

    #include <cmath>
    #include <cstdio>
    #include <vector>
    #include <iostream>
    #include <algorithm>
    #include <unordered_map>
    using namespace std;
    
    #define BOUND (1000000007)
    int main() 
    {
        //    Get input
        int n, m; cin >> n >> m;
        vector<long long> A(n);
        for(int i = 0; i < n; i ++)        cin >> A[i];
        vector<long long> B(m);
        for(int i = 0; i < m; i ++)        cin >> B[i];
        vector<long long> C(m);
        for(int i = 0; i < m; i ++)        cin >> C[i];
    
        //
        unordered_map<int, long long> hm;
        for(int i = 0; i < m; i ++)
        {
            if(hm.find(B[i]) == hm.end())
            {
                hm[B[i]] = C[i];
            }
            else
            {
                hm[B[i]] *= C[i];
                hm[B[i]] %= BOUND;
            }
        }
    
        //
        long long facOne = 1;
        for(auto &e: hm)
        {
            if(e.first == 1)
            {
                facOne *= e.second;
                facOne %= BOUND;
                continue;
            }
    
            int j = e.first - 1;
            while(j < n)
            {
                A[j] *= e.second;
                A[j] %= BOUND;
                j += e.first;
            }
        }
    
        //
        for_each(A.begin(), A.end(), [&](long long v){
            v = (v * facOne) % BOUND;
            cout << v << " ";});
        return 0;
    }
  • 相关阅读:
    第1次作业
    第0次作业
    总结报告
    第14、15周作业
    第七周作业
    第六周作业
    第四周作业
    第四次作业
    第三次作业
    2018第二次作业
  • 原文地址:https://www.cnblogs.com/tonix/p/4304643.html
Copyright © 2011-2022 走看看