• CF 1423 K. Lonely Numbers(数学 + 思维)


    传送门

     

    思路:根据三角形性质,我们容易得到:

    a + gcd(a, b)^2 > b

    a + b > gcd(a, b)^2

    b + gcd(a, b)^2 > a

    推出: a - b < gcd(a, b)^2 < a + b ①

    假设a为偶数,可以得到 a + 2或者a - 2与a配对一定满足 2 < 4 < x(>= 6),得到偶数一定成立

    假设a为奇数:

    如果a为质数p,若需要满足①,则必须 p^2 - p < p^2 < p^ + p,得到(p,p^2)为一对

    如果a不为质数,则a可以表示为若干个素数相乘(唯一分解定理),我们选择最小的质数,则 a = p * Y,则a + p 或者 a - p可以与a配对,

    即 a + p - a < p^2 < a + b,得到非质数的奇数一定成立

    所以答案就是p[n] - p[sqrt(n)](p[N]表示数字N之前有几个质数,包括N)

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <algorithm>
     4 #include <cstring>
     5 #include <vector>
     6 #include <set>
     7  
     8 using namespace std;
     9  
    10 #define ll long long
    11 #define pb push_back
    12 #define fi first
    13 #define se second
    14 #define lson(rt) (rt << 1)
    15 #define rson(rt) (rt << 1 | 1)
    16 
    17 const int N = 1e6 + 10;
    18 int vis[N], is_p[N];
    19 
    20 void fun()
    21 {
    22     vis[1] = 1;
    23     for(int i = 2; i < N; ++i) {
    24         if(vis[i]) continue;
    25         vis[i] = 1;
    26         is_p[i] = 1;
    27         for(int j = i + i; j < N; j += i) vis[j] = 1;
    28     }
    29 
    30     for(int i = 1; i < N; ++i) is_p[i] += is_p[i - 1];
    31 }
    32 
    33 void solve()
    34 {
    35     fun();
    36     int T;
    37     scanf("%d", &T);
    38     while(T--) {
    39         int n;
    40         scanf("%d", &n);
    41         
    42         printf("%d
    ", is_p[n] - is_p[(int)sqrt(double(n))] + 1);
    43     }
    44 }
    45 
    46  
    47 int main(){
    48 
    49     solve();
    50     
    51     return 0;
    52 }
  • 相关阅读:
    Node.js github开源代码
    Node.js Base64 Encoding和Decoding
    图论500题
    gvim中的gvimrc和vimrc
    ubuntu 命令行卸载并清理软件
    vim复制到系统剪贴板
    Electron 主进程与渲染进程之间的通 信(同步通信、异步通信)
    Android 使用系统录制视频功能
    Electron 自定义软件顶部菜单、右键菜单以及绑定快捷键
    Electron remote 模块、通过 BrowserWindow 打开新窗口
  • 原文地址:https://www.cnblogs.com/SSummerZzz/p/13843864.html
Copyright © 2020-2023  润新知