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;
    }
    
    
  • 相关阅读:
    linux 命令——48 watch (转)
    linux 命令——47 iostat (转)
    linux 命令——46 vmstat(转)
    linux 命令——45 free(转)
    linux 命令——44 top (转)
    linux 命令——43 killall(转)
    linux 命令——42 kill (转)
    linux 命令——41 ps(转)
    linux 命令——40 wc (转)
    Java for LeetCode 068 Text Justification
  • 原文地址:https://www.cnblogs.com/BeautifulWater/p/15228831.html
Copyright © 2011-2022 走看看