1849: Cool number

Description

众所周知,yjj对于数的要求非常高,今天她定义了一个这样的数,叫酷炫的数。所谓酷炫的数就是满足:

1、它不能含有除了2,3,7这三种素因子以外的素因子。

2、它各个位上的数字和必须是3的倍数。

3、它各个位上的数字必须含有至少一个4或者至少一个6。

现在yjj给出一个区间[L,R],聪明的你帮忙告诉yjj这区间里有多少个酷炫的数吧

Input

 

首先输入一个整数T,代表有T组测试实例。(1<=T<=10000)

对于每组测试,输入一行包含两个整数L、R,如题目所示。(1<=L<=R<=10,000)

 

Output

对于每组测试实例,输出一个整数占一行,代表酷炫的数的个数。

 

 

Sample Input

2
24 24
20 40

Sample Output

1
2
 
当时做的时候可能头有点昏,因为一个条件,
就一直错了。。。。。。之后看才找到问题
 
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<string.h>

using namespace std;

int main()
{
    int v[11100]={0};//v[i]表示1到i有多少个数满足
    int v1[11100]={0};//用来标记1到5000中满足条件的数
    int d[5510];//用来保存1到5000的素数,2,3,7除外
    for(int i=0;i<5000;i++)
        d[i]=21000;//赋初值
    int l=1;
    d[0]=5;
    for(int i=11;i<=5000;i++)//求素数
    {
        int f=1;
        for(int j=2;j<=sqrt(i);j++)
        {
            if(i%j==0)
            {
                f=0;
                break;
            }
        }
        if(f)
        {
            d[l++]=i;
        }
    }
    int l1=0;
    for(int i=6;i<=10000;i++)//求满足条件的数
    {
        int flag=1;
        for(int j=0;d[j]<=i/2&&flag;j++)
        //一开始是让d[j]<=sqrt(i);老坑了,一直找不到错误
        //除了2,3,7素数外,不能被其它素数整除
        //b[j]<=i/2;所以必须给b数组赋初值,不然可能会有其它问题
        {
            if(i%d[j]==0)
            {
                flag=0;
                break;
            }
        }
        if(flag)//判断和是否能被3整除和是否含有4或6
        {
            int t=0;
            int f=0;
            int s=i;
            while(s)
            {
                int q=s%10;
                s/=10;
                if(q==4||q==6)
                    t++;
                f+=q;
            }
            if(f%3==0&&t>=1)
            {
                v[i]=++l1;//保存数量
                v1[i]=1;//标记
            }
        }
        if(v[i]==0)
            v[i]=l1;//保存数量
    }
    int n;
    scanf("%d",&n);
    while(n--)
    {
        int L,R;
        scanf("%d%d",&L,&R);
        int y=0;
        if(v1[L])//判断L是否满足
            y=1;
        printf("%d\n",v[R]-v[L]+y);
    }
    return 0;
}

 

 

posted @ 2017-04-21 16:35  X_1996  阅读(259)  评论(0)    收藏  举报