[蓝桥杯]幸运数

https://blog.csdn.net/update7/article/details/68951980

 

//THIS CODE NOT WORKS
#include<bits/stdc++.h>
#define ls o<<1
#define rs o<<1|1
#define MS(x,y) memset(x,y,sizeof(x))
#define MC(x,y) memcpy(x,y,sizeof(x))
typedef long long LL; 
template<class T> inline void gmax(T &a,T b){if(b>a)a=b;}
template<class T> inline void gmin(T &a,T b){if(b<a)a=b;}
const int N=1e6+10,M=0,Z=1e9+7,W=13,L=2e6;
const double eps=1e-10;
const int dy[4]={-1,0,0,1},dx[4]={0,-1,1,0};
using namespace std;
int casenum,casei;
int id;
int n,m;
int a[N];
void dfs(int pre){
    if(a[pre]>=n)
        return;
    int cnt=pre;
    for(int i=pre;i<=n;i++){
        if(i%a[pre]!=0){
            a[cnt]=a[i];
            cnt++;
        }
    }
    dfs(pre+1);
}
int main(){
//  freopen("in.txt","r",stdin); 
    scanf("%d%d",&m,&n);
    int cnt=0;
    for(int i=1;i<=n;i++)
        a[i]=2*i-1;
    dfs(2);
    for(int i=1;a[i]<n;i++){
        if(a[i]>m)
            cnt++;
    }
    printf("%d\n",cnt);
    return 0;
}

下面这个代码要算好相对位置

很直接 

#include<bits/stdc++.h>
#define ls o<<1
#define rs o<<1|1
#define MS(x,y) memset(x,y,sizeof(x))
#define MC(x,y) memcpy(x,y,sizeof(x))
typedef long long LL; 
template<class T> inline void gmax(T &a,T b){if(b>a)a=b;}
template<class T> inline void gmin(T &a,T b){if(b<a)a=b;}
const int N=5e5+10,M=0,Z=1e9+7,W=13,L=2e6;
const double eps=1e-10;
const int dy[4]={-1,0,0,1},dx[4]={0,-1,1,0};
using namespace std;
int casenum,casei;
int id;
int n,m,nn;
int a[N];

int main(){
//	freopen("in.txt","r",stdin); 
//	freopen("out.txt","w",stdout); 
	
	scanf("%d%d",&n,&m);
	int k=1;
	for(int i=1;i<m;i+=2)
		a[k++]=i;
	//k related number 
	for(int j=2;j<k;j++){
		if(a[j]>=k)break;
		int num=0;//delete in this loop
		//a[j]-1 keep
		for(int e=a[j];e<k;){
			if(e+a[j]<k){
				memcpy(a+e-num,a+e+1,sizeof(int)*(a[j]-1));
				num++;
			}else{
				if(e!=k-1)
				memcpy(a+e-num,a+e+1,sizeof(int)*(k-e-1));
				num++;
				break;
			}
			e+=a[j];
		}
		k-=num;
	}
	int ans=0;
	int i=1;
	while(i<k&&a[i]<=n)i++;
	while(i<k&&a[i]<=m)
	ans++,i++;
	printf("%d\n",ans);
	return 0;
}
发布了810 篇原创文章 · 获赞 19 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/ujn20161222/article/details/104033253