zoukankan      html  css  js  c++  java
  • BZOJ2820 YY的GCD

    妈呀这个世界的数论实在是太可怕了。。。

    Orz iwtwiioi(给完传送门赶紧跑)

     1 /**************************************************************
     2     Problem: 2820
     3     User: rausen
     4     Language: C++
     5     Result: Accepted
     6     Time:3508 ms
     7     Memory:127760 kb
     8 ****************************************************************/
     9  
    10 #include <cstdio>
    11 #include <algorithm>
    12  
    13 using namespace std;
    14 typedef long long ll;
    15 const int N = 1e7 + 5;
    16  
    17 int n, m;
    18 int p[N], u[N], g[N], cnt;
    19 bool vis[N];
    20  
    21 inline int read() {
    22   int x = 0;
    23   char ch = getchar();
    24   while (ch < '0' || '9' < ch)
    25     ch = getchar();
    26   while ('0' <= ch && ch <= '9') {
    27     x = x * 10 + ch - '0';
    28     ch = getchar();
    29   }
    30   return x;
    31 }
    32  
    33 void get_g() {
    34   int i, j, k;
    35   u[1] = 1;
    36   for (i = 2; i < N; ++i) {
    37     if (!vis[i])
    38       p[++cnt] = i, u[i] = -1, g[i] = 1;
    39     for (j = 1; j <= cnt; ++j) {
    40       if ((k = i * p[j]) >= N) break;
    41       vis[k] = 1;
    42       if (i % p[j] == 0) {
    43     u[k] = 0, g[k] = u[i];
    44     break;
    45       }
    46       u[k] = -u[i], g[k] = u[i] - g[i];
    47     }
    48   }
    49   for (i = 1; i < N; ++i)
    50     g[i] += g[i - 1];
    51 }
    52  
    53 ll work(int n, int m) {
    54   ll res = 0;
    55   int i, j;
    56   for (i = 1; i <= n; i = j + 1) {
    57     j = min(n / (n / i), m / (m / i));
    58     res += 1ll * (g[j] - g[i - 1]) * (n / i) * (m / i);
    59   }
    60   return res;
    61 }
    62  
    63 int main() {
    64   int T;
    65   T = read();
    66   get_g();
    67   while (T--) {
    68     n = read(), m = read();
    69     if (n > m) swap(n, m);
    70     printf("%lld\n", work(n, m));
    71   }
    72   return 0;
    73 }
    View Code
    By Xs酱~ 转载请说明 博客地址:http://www.cnblogs.com/rausen
  • 相关阅读:
    zoj2132-The Most Frequent Number
    ant-design getFieldDecorator 无法获取自定义组件的值
    ant-design-pro Login 组件 实现 rules 验证
    js 终止 forEach 循环
    js 终止 for 循环
    vue打包后出现一些map文件的解决方法
    ant font 本地化
    react 设置代理(proxy) 实现跨域请求
    ES6 async 与 await 实战
    {...formItemLayout} 标签布局
  • 原文地址:https://www.cnblogs.com/rausen/p/4294199.html
Copyright © 2011-2022 走看看