zoukankan      html  css  js  c++  java
  • Bubble Cup 13

    • 题意:定义两个数(a,b)是朋友,如果:(gcd(a,b)),(frac{a}{gcd(a,b)}),(frac{b}{gcd(a,b)})能构成三角形,现在给你一个正整数(n),问你(1-n)中有多少数没有朋友.

    • 题解:首先考虑合数,设(a=b*c),(bge c),(bge 2,cge 2),我们知道:(gcd(b,b-1)=1),那么:(gcd(b*c,(b-1)*c)=c),则对于:(b*c),((b-1)*c),(gcd(b*c,(b-1)*c)=c),由三角形构成条件不难得到不等式:(b+b-1>c),(b+c>b-1),(b-1+c>b),这三个不等式是恒成立的,所以合数是不满足条件的.

      接下来我们考虑质数,对于两个互质的数,我们可以得到三个数(p_1,p_2,1),这三个数永远不可能构成三角形(不多解释了),假如两个质数不互质,那么(p|a),那么我们可以得到三个数:(1,P,frac{a}{p}),而(a)最小为(p^2),如果能构成三角形的话:(p+1>frac{a}{p}),(frac{a}{p}+1>p),所以当且仅当(a=p^2),满足条件,所以对于([1,n])中的质数(p),如果存在(p^2),那么它一定不是孤单的,所以(p^2>n)就是我们此题的核心限制条件,也就转化为我们要求((sqrt{n},n])中的质数个数.

    • 代码:

    #include <bits/stdc++.h>
    #define ll long long
    #define fi first
    #define se second
    #define pb push_back
    #define me memset
    #define rep(a,b,c) for(int a=b;a<=c;++a)
    #define per(a,b,c) for(int a=b;a>=c;--a)
    const int N = 1e6 + 10;
    const int mod = 1e9 + 7;
    const int INF = 0x3f3f3f3f;
    using namespace std;
    typedef pair<int,int> PII;
    typedef pair<ll,ll> PLL;
    ll gcd(ll a,ll b) {return b?gcd(b,a%b):a;}
    ll lcm(ll a,ll b) {return a/gcd(a,b)*b;}
     
    int t;
    int n;
    int prime[N],cnt;
    int res[N];
    bool st[N];
     
    void get_prime(int n){
    	rep(i,2,n){
    		if(!st[i]){
    			prime[cnt++]=i;
    		}
    		for(int j=0;j<cnt && prime[j]<=n/i;++j){
    			st[i*prime[j]]=true;
    			if(i%prime[j]==0) break;
    		}
    		res[i]=cnt;
    	}
    }
     
    int main() {
        ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    	cin>>t;
    	get_prime(1000000);
    	while(t--){
    		cin>>n;
    	
    		cout<<res[n]-res[(int)sqrt(n)]+1<<'
    ';    //不能取到p^2
     
    	}
     
        return 0;
    }
    
  • 相关阅读:
    【面经】网易互娱一面
    【Go】简易到简陋的web服务器
    【Go】连接本地MySQL读取数据
    【MySQL】Windows10下安装
    【深入理解计算机系统】第十三章-并发编程
    【Python】数据库查询 & 批量下载文件
    【深入理解计算机系统】第十二章-网络编程
    grep的时候Binary file matches **.log 怎么解决
    高并发系统架构思想
    mysql 索引
  • 原文地址:https://www.cnblogs.com/lr599909928/p/14076355.html
Copyright © 2011-2022 走看看