zoukankan      html  css  js  c++  java
  • 【算法与数据结构】【WEEK1】杰哥和数字+素数区间

    map记录数字拆解后的情况

    #include <bits/stdc++.h>
    #define rep(i,x,n) for(int i=x;i<n;i++)
    #define repd(i,x,n) for(int i=x;i<=n;i++)
    using namespace std;
    map<int,int> mp[2];
    int n,ans=0;
    
    inline void spl(int x,int op)
    {
    	int k=x;
    	mp[op].clear();
    	while(k>0)//因为数字只有9位,不用搞什么特判去跳出 
    	{
    		if(!mp[op][k%10])
    		{
    		    mp[op][k%10]++;
    	            if(op&&mp[0][k%10])
    		    {
                            ans++;
    			return;
    		     } 
    		}
    		k/=10;
    	}
    }
    
    int main()
    {
    	cin>>n;
        spl(n,0);
        int t = sqrt(n);
    	repd(i,1,t)
    	{
    		if(n%i==0)
    		{
    			if(i*i==n)
    			    spl(t,1);
    			else 
    			    spl(i,1),spl(n/i,1);
    		}
    	}
    	cout<<ans;	
        return 0;
    }
    
    

    线性筛+二分,特判1

    #include <bits/stdc++.h>
    #define rep(i,x,n) for(int i=x;i<n;i++)
    #define repd(i,x,n) for(int i=x;i<=n;i++)
    #define lowbit(x) (x&-x)
    using namespace std;
    const int N = 1E5+10,PN = N/2;
    vector<int> prime;
    int nprime[N];
    void Euler()
    {
    	for(int i=2;i<=N;i++)
    	{
    		if(!nprime[i])
    		   nprime[i]=i,prime.push_back(i);
    		   
    		rep(j,0,prime.size())
    		{
    			if(prime[j]*i>N||prime[j]>nprime[i])
    			   break;
    			else 
    			   nprime[i*prime[j]]=prime[j];
    		}
    	}
    }
    int ask(int x)
    {
    	int pos=upper_bound(prime.begin(),prime.end(),x)-prime.begin();
    	return prime[pos]-prime[pos-1]-1;
    }
    int main()
    {
    	Euler();
        
    	int t,x;
    	cin>>t;
    	repd(i,1,t)
    	{
    		cin>>x;
    		if(x==1||nprime[x]==x) cout<<0<<endl;
    		else cout<<ask(x)<<endl;
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    数学与基本思维
    思考与知识
    数学思想
    肥胖是罪、食物有毒
    高血压成因
    心脑血管疾病
    知行合一与人
    所谓的成长就是认知升级-成长就是应付自如
    深度思考
    “三高”即通常所说的高血压、高血脂(血脂异常)和高血糖三种病症的总称
  • 原文地址:https://www.cnblogs.com/BeautifulWater/p/15228831.html
Copyright © 2011-2022 走看看