zoukankan      html  css  js  c++  java
  • 距离的总和

    2017 搜狗校园招聘 距离的总和

    题目描述:

    时间限制:c/c++ 2000MS

    定义两个大于2的偶数之间的距离,为这两个数之间质数的个数。从小到大输入n个大于2的偶数,输出所有数两两之间距离的总和(应该有n*(n-1)/2个距离,输出总和就好)。
    输入
    第一行是输入偶数的个数,最小为2,最大可能到几万。之后每行为一个偶数,最小是4,最大可能是几百万,不重复的升序排列。
    输出
    输入数据两两间距离的总和,这应该是一个不小于0的整数。

    样例输入
    3
    4
    6
    12
    样例输出
    6
     
    看到题目我的想法是预处理算出一个数前面有多少个质数,然后利用区间减法的性质,可以得到任意区间的质数的个数。然后就是数每一个小区出现的次数,不难得到,这个次数为(n - i)*i,然后从左到右扫描累加和即可。当时我没有做出来。内存超限。
     1 #include<bits/stdc++.h>
     2 #define pb push_back
     3 #define FOR(i, n) for (int i = 0; i < (int)n; ++i)
     4 #define dbg(x) cout << #x << " at line " << __LINE__ << " is: " << x << endl
     5 typedef long long ll;
     6 using namespace std;
     7 typedef pair<int, int> pii;
     8 const int maxn = 1e3 + 10;
     9 void solve() {
    10     int n;
    11     scanf("%d", &n);
    12     vector<int> a(n);
    13     unordered_map<int, int> m;
    14     int x, ma = 1;
    15     for (int i = 0; i < n; i++) {
    16         scanf("%d", &x); m[x]++; ma = max(ma, x);
    17         //cout <<x << endl;
    18     }
    19     vector<bool> p(ma + 1, 0);
    20     vector<int> b;
    21     int cnt = 0;
    22     for (int i = 2; i <= ma; i++) {
    23         if(m.count(i)) {
    24             for (x = 0; x < m[i]; x ++) b.pb(cnt);
    25         }
    26         if(p[i]) continue;
    27         cnt ++;
    28         for (ll j = 1ll * i * i; j <= ma; j += i) {
    29             p[j] = 1;
    30         }
    31     }
    32     ll res = 0;
    33     for (int i = 0; i < n - 1; i++) {
    34         res += (b[i + 1] - b[i]) * (n - i - 1) * (i + 1);
    35     }
    36     printf("%I64d
    ", res);
    37 }
    38 int main() {
    39     freopen("test.in", "r", stdin);
    40     //freopen("test.out", "w", stdout);
    41     solve();
    42     return 0;
    43 }
     
     
  • 相关阅读:
    Fastjson
    react 使用createContext、Consumer 及 useContext 、Class.contextType父子组件共享数据
    使用useReducer 实现 todoList
    react中 useMemo与useCallback使用
    react17 函数组件 使用 better-scroll2.0 封装方法 及 使用
    react 执行 yarn build ,无法直接打开dist文件下的index
    react-redux 持久数据存储
    document.body.removeChild 获取到 symbol 标签
    react嵌套路由,并设置默认子路由
    Vagrant环境下配置node_exporter、mysqld_exporter、prometheus、grafana
  • 原文地址:https://www.cnblogs.com/y119777/p/5872815.html
Copyright © 2011-2022 走看看