9 条题解

  • 0
    @ 2026-10-25 15:45:13
    #include<bits/stdc++.h>
    using namespace std;
    bool f(int x){
    	for(int i=2;i<=sqrt(x);i++)
    		if(x%i==0)
    			return 0; 
    	return 1;
    }
    int main(){
    	int a,b,d;
    	cin>>a>>b>>d;
    	int as=0;
    	for(int i=a;i<=b;i++){
    		if(f(i)){
    			int k=i;
    			while(k){
    				if(k%10==d){
    					as++;
    					break;
    				}
    				k/=10;
    			}
    		}
    	}
    	cout<<as;
    	return 0;
    }
    
    • 0
      @ 2025-11-20 20:18:09
      本人打的AC代码,请各位大佬指点
      
      # include <bits/stdc++.h>
      
      using namespace std;
      bool IsPrime(int x){
      	if(x<2)return false;
      	if(x==2)return true;
      	for(int i = 2;i*i<=x;i++)
      		if(x%i==0)
      		    return false;
      	return true;
      }
      bool HasD(int n,int d){
      	while(n>0){
      		if(n%10==d)return true;
      		n/=10;
      	}
      	return false;
      }
      int main(){
      	int a,b,d,tot=0;
      	cin>>a>>b>>d;
      	for(int i = a;i<=b;i++){
      		if(HasD(i,d)&&IsPrime(i))tot++;
      	}
      	cout<<tot<<"\n";
      	return 0;
      }
      
      • -1
        @ 2026-6-23 17:40:19

        include <bits/stdc++.h>

        using namespace std; bool IsPrime(int x){ if(x<2)return false; if(x2)return true; for(int i = 2;i*i<=x;i++) if(x%i0) return false; return true; } bool HasD(int n,int d){ while(n>0){ if(n%10==d)return true; n/=10; } return false; } int main(){ int a,b,d,tot=0; cin>>a>>b>>d; for(int i = a;i<=b;i++){ if(HasD(i,d)&&IsPrime(i))tot++; } cout<<tot<<"\n"; return 0; }

        • -1
          @ 2023-3-28 19:04:44
          #include<iostream>
          using namespace std;
          int a,b,x,cnt;
          bool check(int n){
          	for(int i=2;i*i<=n;i++){
          		if(n%i==0)return false;
          	}
          	return true;
          }
          int main(){
          	cin>>a>>b>>x;
          	for(int i=a;i<=b;i++){
          		if(check(i)){
          			int tmp=i;
          			while(tmp){
          				if(tmp%10==x){
          					cnt++;
          					break;
          				}
          				tmp/=10;
          			}
          		}
          	}
          	cout<<cnt;
          	return 0;
          }
          
          • -1
            @ 2022-7-10 9:35:25

            #include<stdio.h> #include using namespace std; int main() { int a,b,d,sum=0,ans=0; cin>>a>>b>>d; if(a%20) a+=1; for(int i=a;i<=b;i+=2) { int k=i; int flag=1; for(int j=3;j*j<=k;j+=2) { if(k%j0) { flag=0; break; } } if(flag1) { while(k) { sum=k%10; if(sumd) { ans+=1; break; } k/=10; } } } cout<<ans<<endl; return 0; }

            • -2
              @ 2024-4-12 18:57:24

              #include<bits/stdc++.h> using namespace std; bool zs(int i){ if(i1){ return 0; } for(int k=2;k*k<=i;k++){ if(i%k0){ return 0; } } return 1; } int main(){ int a,b,d; int cnt=0; cin>>a>>b>>d; for(int i=a;i<=b;i++){ if(zs(i)1){ int t=i; while(t>0){ if(t%10d){ cnt++; break; } t/=10; } } } cout<<cnt; return 0; }

              • -2
                @ 2023-9-9 13:46:16
                #include <bits/stdc++.h>
                using namespace std;
                int n,m,ans,l;
                bool a[4000005]={};
                
                bool c(int x)
                {
                	int i=1;
                	while(i<=x)
                	{
                		if(x/i%10==l)
                		{
                			return 1;
                		}
                		else
                		{
                			i*=10;
                		}
                	}
                	return 0;
                }
                
                int main()
                {
                	cin>>n>>m>>l;
                	for(int i=2;i<=sqrt(m);i++)
                	{
                		if(a[i]==0)
                		{
                			for(int j=i*2;j<=m;j+=i)
                			{
                				a[j]=1;
                			}
                		}
                	}
                	for(int i=n;i<=m;i++)
                	{
                		if(a[i]==0 && c(i))
                		{
                			ans++;
                		}
                	}
                	cout<<ans;
                    return 0;
                }
                

                跑的飞起的筛素数 (欧拉筛表示不服)

              • -2
                @ 2023-3-9 17:51:59
                #include<iostream>
                
                using namespace std;
                
                bool pdzs(int n){
                	if(n<2){
                		return 0;
                	}
                	for(int i = 2; i * i <= n; i ++ ){
                		if(n%i == 0){
                			return 0;
                		}
                	}
                	return 1;
                }
                
                bool pdtj(int x,int y){
                	while(x != 0){
                		if(x%10==y){
                			return 1;
                		}
                		x/=10;
                	}
                	return 0;
                }
                
                int main(){
                	int n,m,x,ans = 0;
                	cin>>n>>m>>x;
                	for(int i = n; i <= m; i ++ ){
                		if(pdzs(i)&&pdtj(i,x)){
                			ans ++ ;
                		}
                	}
                	cout<<ans;
                	return 0;
                } 
                
                • -2
                  @ 2023-1-31 19:24:23

                  数据有点大,筛质数要快

                  如果你还在用这个朴素算法:

                  bool su(int x)
                  {
                      for(int i = 2; i * i <= x; i++)
                      {
                          if(x % i == 0)
                          {
                              return 1;
                          }
                      }
                      return 0;
                  }
                  

                  image

                  听取TLE声一片


                  prime:

                  有点耳熟

                  bool prime[N];
                  void prime_find(int x)
                  {
                      prime[1] = 1;
                  	for(int i = 2; i * i <= x; i++)
                  	{
                  		if(prime[i] == 0)
                  		{
                  			for(int j = i * i; j <= m; j += i)
                  			{
                  				prime[j] = 1;
                  			}
                  		}
                  	}
                  }
                  

                  image

                  峰值时间38ms,跑得飞快


                  最后放上完整代码

                  #include <iostream>
                  #include <stack>
                  #include <cmath>
                  #include <vector>
                  #include <string.h>
                  #include <queue>
                  #include <stdio.h>
                  #include <iomanip>
                  #include <cstdio>
                  #include <algorithm>
                  #define int long long
                  using namespace std;
                  const int N = 4e6 + 10;//<-
                  const int INF = 0x3f3f3f3f;
                  int n, m, k;
                  bool prime[N];//筛素数
                  void prime_find(int x)
                  {
                      prime[1] = 1;
                  	for(int i = 2; i * i <= x; i++)
                  	{
                  		if(prime[i] == 0)
                  		{
                  			for(int j = i * i; j <= m; j += i)
                  			{
                  				prime[j] = 1;
                  			}
                  		}
                  	}
                  }
                  signed main()
                  {
                  	cin >> n >> m >> k;
                      prime_find(m);
                      if(n % 2 == 0)
                      {
                          n++;//微调,避免是偶数
                      }
                      int ans = 0;
                      for(int i = n; i <= m; i += 2)//两个两个加
                      {
                          if(prime[i] == 0)//是素数
                          {
                              int sum = i;
                              while(sum)//分离数位
                              {
                                  int l = sum % 10;
                                  if(l == k)
                                  {
                                      ans++;
                                      break;
                                  }
                                  sum /= 10;
                              }
                          }
                      }
                      cout << ans << endl;
                  	return 0;//完结撒花
                  }
                  
                  • @ 2023-3-9 17:51:36

                    开玩笑,你TLE是写错了吧?

                    这代码都AC。

                    #include<iostream>
                    
                    using namespace std;
                    
                    bool pdzs(int n){
                    	if(n<2){
                    		return 0;
                    	}
                    	for(int i = 2; i * i <= n; i ++ ){
                    		if(n%i == 0){
                    			return 0;
                    		}
                    	}
                    	return 1;
                    }
                    
                    bool pdtj(int x,int y){
                    	while(x != 0){
                    		if(x%10==y){
                    			return 1;
                    		}
                    		x/=10;
                    	}
                    	return 0;
                    }
                    
                    int main(){
                    	int n,m,x,ans = 0;
                    	cin>>n>>m>>x;
                    	for(int i = n; i <= m; i ++ ){
                    		if(pdzs(i)&&pdtj(i,x)){
                    			ans ++ ;
                    		}
                    	}
                    	cout<<ans;
                    	return 0;
                    } 
                    
                • 1

                信息

                ID
                975
                时间
                1000ms
                内存
                128MiB
                难度
                6
                标签
                递交数
                546
                已通过
                167
                上传者