willy108

Untitled

Sep 22nd, 2020
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.81 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <cstdlib>
  5. #include <ctime>
  6. #include <cmath>
  7. #include <cassert>
  8. #include <algorithm>
  9. #include <vector>
  10. #include <string>
  11. #include <map>
  12. #include <set>
  13. #include <sstream>
  14. #include <list>
  15. #include <queue>
  16. #include <stack>
  17. //#include <unordered_map>
  18. //#include <unordered_set>
  19. #include <functional>
  20.  
  21. #define max_v 1100
  22. #define LOGN 50
  23. #define int_max 0x3f3f3f3f
  24. #define cont continue
  25. #define byte_max 0x3f
  26. #define pow_2(n) (1 << (n))
  27. //tree
  28. #define lsb(n) ((n)&(-(n)))
  29. #define LC(n) (((n) << 1) + 1)
  30. #define RC(n) (((n) << 1) + 2)
  31. #define LOG2(n) ((int)(ceil(log2((n)))))
  32. using namespace std;
  33.  
  34. void setIO(const string& file_name){
  35.     freopen((file_name+".in").c_str(), "r", stdin);
  36.     freopen((file_name+".out").c_str(), "w+", stdout);
  37. }
  38.  
  39. const long long mod = (long long)1e9 + 7;
  40.  
  41. long long F(long long a, long long b){// returns sym of all integers [a, b]
  42.   if(a > b) swap(a, b);
  43.   long long A = (b + 1ll - a) % mod;
  44.   long long B = (a * A) % mod;
  45.   long long C = ((b - a) % 2ll) ? b - a : (b - a) / 2ll;
  46.   long long D = ((b + 1ll - a) % 2ll) ? b + 1ll - a : (b + 1ll- a) / 2ll;
  47.   C %= mod;
  48.   D %= mod;
  49.   return ((C * D) % mod + B) % mod;
  50. }
  51.  
  52.  
  53. int main(){
  54.   long long n, tot = 0ll;
  55.   scanf("%lld", &n);
  56.   for(long long i = 1ll; n/i>(long long)floor(sqrt(n)); i += 1ll){
  57.     (tot += F(n/i, 1ll + (n/(i + 1ll))) * (i%mod)) %= mod;
  58.     //printf("%lld %lld -> %lld\n", n/i, 1ll + (n/(i + 1ll)), F(n/i,  1ll + (n/(i + 1ll) * i)));
  59.   }
  60.   //printf("%lld\n", tot);
  61.   //for(int i = 0; i<n; i++){
  62.     //long long a, b;
  63.     //scanf("%lld%lld", &a, &b);
  64.     //printf("%lld\n", F(a, b));
  65.   //}
  66.   for(long long i = 1ll; i<=(long long)floor(sqrt(n)); i += 1ll){
  67.     (tot += (i%mod) * (n/i)) %= mod;
  68.   }
  69.   printf("%lld\n", tot);
  70.     return 0;
  71. }
  72.  
  73.  
Advertisement
Add Comment
Please, Sign In to add comment