zoukankan      html  css  js  c++  java
  • 洛谷P2257 YY的GCD

    今日份是数论

    大概是。。从小学奥数到渐渐毒瘤

    那就简单列一下目录【大雾

    同余 质数密度 唯一分解定理 互质

    完全剩余系 简化剩余系 欧拉函数 逆元 斐蜀定理

    阶(及其性质) 欧拉定理 费马小定理 原根 调和级数 

    欧拉函数推广到积性函数 完全积性函数 

    莫比乌斯函数 莫比乌斯反演 

    狄利克雷卷积 杜教筛 Lucas定理

    回到这道题

    题意:

    给出n, m ∈ [1, 1e7] ,求有多少对(x, y)

    满足x ∈ [1, n], y ∈ [1, m] 且 gcd(x, y) 为质数

    字丑【痛心

    附上代码

     1 #include <cstdio>
     2 #include <algorithm>
     3 using namespace std;
     4 const int N = 1e7 + 5;
     5 
     6 int prm[N], mu[N], ps;
     7 bool ism[N];
     8 long long res[N], g[N];
     9 
    10 inline void calc(int n){
    11     mu[1] = 1;
    12     for(int i = 2; i <= n; i++){
    13         if(!ism[i]) {prm[++ps] = i; mu[i] = -1;}
    14         for(int j = 1; j <= ps && prm[j] * i <= n; j++){
    15             ism[prm[j] * i] = 1;
    16             if(!(i % prm[j])) break;
    17             mu[prm[j] * i] = -mu[i];
    18         }
    19     }
    20     for(int i = 1; i <= ps; i++)
    21         for(int j = 1; j * prm[i] <= n; j++)
    22             g[j * prm[i]] += mu[j];
    23     for(int i = 1; i <= n; i++)
    24         res[i] = res[i - 1] + (long long) g[i];
    25 }
    26 
    27 int main(){
    28     int T; scanf("%d", &T);
    29     long long ans;
    30     int n, m;
    31     calc(1e7);
    32     while(T--){
    33         scanf("%d%d", &n, &m);
    34         if(n > m) swap(n, m);
    35         ans = 0;
    36         int i = 1, j;
    37         while(i <= n){
    38             j = min(n / (n / i), m / (m / i));
    39             ans += (long long)(n / i) * (m / i) * (res[j] - res[i - 1]);
    40             i = j + 1;
    41         }
    42         printf("%lld
    ", ans);
    43     }
    44     return 0;    
    45 }
    View Code
  • 相关阅读:
    HTTP 返回状态代码详细解释
    丁一的作业
    getIntent().getExtras().clear()未清空Bundle的数据
    activity android:launchMode="singleTask" 没用重现启动activity的问题
    判断email格式
    判断网络是否可用
    修改系统语言
    生成UUID
    css reset file
    智能指针(auto_ptr)vc版
  • 原文地址:https://www.cnblogs.com/hjmmm/p/9402575.html
Copyright © 2011-2022 走看看