Submission #1258598

#TimeUsernameProblemLanguageResultExecution timeMemory
1258598phtungModsum (NOI12_modsum)C++20
25 / 25
811 ms16108 KiB
#include <bits/stdc++.h>

using namespace std;

#define name "IO"
#define int long long 

const int mod = 5;
const int inf = 1e18 + 7; 
const int maxn = 1e6 + 5; 
int n;

int Pow(int x, int y) 
{
    int ans = 1;
    while (y > 0) 
    {
        if (y & 1) ans = (ans * x) % mod;
        y /= 2;
        x = x * x;
        x %= mod;
    }
    return ans;
}


int f(int sum)
{
    int s2 = (sum % 5) * (sum % 5) % 5; 
    int s4 = (s2 * s2) % 5;
    return ((s4 + 2 * s2) % 5) + 1;
}


void solve()
{
    int n;
    cin >> n;
    
    vector<pair<int,int>> range(n); 
    for(int i = 0; i < n; i++)
    {
        int l, r;
        cin >> l >> r; 
        range[i] = {l, r}; 
    }

    vector<int> dp(maxn, 0);
    dp[0] = 1; 

    for(auto [l, r] : range)
    {
        vector<int> new_dp(maxn, 0); 
        for(int s = 0; s <= maxn - 5; s++)
        {
            if(!dp[s]) continue; 
            for(int val = l; val <= r; val++)
            {
                new_dp[s + val] += dp[s]; 
            }
        }
        dp.swap(new_dp); 
    }

    int res = 0 ;
    for(int sum = 0; sum <= maxn - 5; sum++)
    {
        if(dp[sum])
        {
            res += dp[sum] * f(sum); 
        }
    }

    cout << res << "\n"; 

}

signed main()
{
    if (fopen (name".INP", "r"))
    {
        freopen (name".INP", "r", stdin);
        freopen (name".OUT", "w", stdout);
    }

    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    clock_t start = clock(); 

    int t = 1;

    while(t--) solve(); 

    std::cerr << "Time: " << clock() - start << "ms\n";

    return 0; 

}

Compilation message (stderr)

modsum.cpp: In function 'int main()':
modsum.cpp:82:17: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   82 |         freopen (name".INP", "r", stdin);
      |         ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
modsum.cpp:83:17: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   83 |         freopen (name".OUT", "w", stdout);
      |         ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...