Submission #86467

#TimeUsernameProblemLanguageResultExecution timeMemory
86467I_use_Brute_forceSavrsen (COCI17_savrsen)C++14
30 / 120
3057 ms81676 KiB
#include <bits/stdc++.h> #define pb push_back #define mp make_pair #define F first #define S second #define pii pair <int, int> #define sz(a) (int)(a.size()) #define resize(v) v.resize(unique(all(v)) - v.begin()); #define all(a) a.begin(), a.end() #define forit(it, s) for(__typeof(s.begin()) it = s.begin(); it != s.end(); it ++) using namespace std; void Fast_Read_Out() { ios_base::sync_with_stdio(0); cin.tie(), cout.tie(); } void Random() { unsigned int seed; asm("rdtsc" : "=A" (seed)); srand(seed); } unsigned int Time() { unsigned int time = clock() / 1000.00; return time; } const int inf = (1e9) + 123; const int N = (1e7) + 1; vector <int> v, z; int lp[N], d[N]; vector <int> pr; vector <pair <int, int> > per; void Resheto() { for(int i = 2; i <= N - 1; i++) { if(lp[i] == 0) { lp[i] = i; pr.pb(i); } for(int j = 0; j < sz(pr) && pr[j] <= lp[i] && pr[j] * i * 1ll <= N - 1; j++) lp[pr[j] * i] = pr[j]; } } void Prime_Multipliers(int x) { int del = 2; int ans = 1; v.clear(); while(x > 1) { if(d[x]) { v.pb(x); break; } while(x % del == 0) v.pb(del), x /= del; del++; } } int binpow(int a, int n) { if(n == 0) return 1; if(n % 2 == 1) return binpow(a, n - 1) * a; else { int b = binpow(a, n / 2); return b * b; } } main () { #ifdef JUDGE freopen("input.txt", "r", stdin); // freopen("fast.txt", "w", stdout); #endif Random(); Fast_Read_Out(); int a, b; cin >> a >> b; Resheto(); for(int i = 0; i < sz(pr); i++) d[pr[i]]++; long long res = 0; if(a == 1) a++, res++; for(int j = a; j <= b; j++) { if(d[j]) { res += j - 1; continue; } Prime_Multipliers(j); per.clear(); int b1 = 1, q = v[0], n = 1, ok = 1; for(int i = 1; i < sz(v); i++) { if(q != v[i]) { if(ok) per.pb(mp(q, n + 1)); else per.pb(mp(q, n)); ok = 0; q = v[i]; n = 2; } else n++; } per.pb(mp(q, n)); long long k = 1; for(int i = 0; i < sz(per); i++) { long long up = (1 - binpow(per[i].F, per[i].S)); long long down = (1 - per[i].F); long long sn = up / down; k *= sn; } if(k > j) k -= j; res += abs(j - k); } cout << res << endl; #ifdef JUDGE // cout << Time() << endl; #endif } // Easy Peasy Lemon Squeezy Sometimes it's the very people who no one imagines anything of who do the things no one can imagine.

Compilation message (stderr)

savrsen.cpp: In function 'void Prime_Multipliers(int)':
savrsen.cpp:57:6: warning: unused variable 'ans' [-Wunused-variable]
  int ans = 1;
      ^~~
savrsen.cpp: At global scope:
savrsen.cpp:82:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main ()
       ^
savrsen.cpp: In function 'int main()':
savrsen.cpp:105:10: warning: unused variable 'b1' [-Wunused-variable]
      int b1 = 1, q = v[0], n = 1, ok = 1;
          ^~
#Verdict Execution timeMemoryGrader output
Fetching results...