bzoj 1853: [Scoi2010]幸运数字 容斥

1853: [Scoi2010]幸运数字

Time Limit: 2 Sec  Memory Limit: 64 MB
Submit: 1170  Solved: 406
[Submit][Status]

Description

在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是“幸运号码”!但是这种“幸运号码”总是太少了,比如在[1,100]的区间内就只有6个(6,8,66,68,86,88),于是他又定义了一种“近似幸运号码”。lxhgww规定,凡是“幸运号码”的倍数都是“近似幸运号码”,当然,任何的“幸运号码”也都是“近似幸运号码”,比如12,16,666都是“近似幸运号码”。 现在lxhgww想知道在一段闭区间[a, b]内,“近似幸运号码”的个数。

Input

输入数据是一行,包括2个数字a和b

Output

输出数据是一行,包括1个数字,表示在闭区间[a, b]内“近似幸运号码”的个数

Sample Input

【样例输入1】
1 10
【样例输入2】
1234 4321

Sample Output

【样例输出1】
2
【样例输出2】
809

HINT

【数据范围】
对于30%的数据,保证1 < =a < =b < =1000000
对于100%的数据,保证1 < =a < =b < =10000000000

  搜索时数字从大到小。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
#include<map>
using namespace std;
#define MAXN 10000000000LL
#define MAXV 1000007
#define MAXE 10000000
#define INFL 0x3f3f3f3f3f3f3f3fLL
typedef long long qword;
qword num[943]=//{{{
{6ll,8ll,68ll,86ll,668ll,686ll,866ll,868ll,886ll,6668ll,6686ll,6866ll,6886ll,8666ll,8668ll,8866ll,66668ll,66686ll,66866ll,66868ll,66886ll,68666ll,68668ll,68686ll,68866ll,86666ll,86668ll,86686ll,86866ll,88868ll,88886ll,666668ll,666686ll,666866ll,666868ll,666886ll,668666ll,668686ll,668866ll,686666ll,686668ll,686866ll,688666ll,688868ll,688886ll,866666ll,866668ll,866686ll,868666ll,868886ll,886666ll,886868ll,888668ll,888686ll,888866ll,888868ll,888886ll,6666668ll,6666686ll,6666866ll,6666868ll,6668666ll,6668668ll,6668686ll,6668866ll,6686666ll,6686668ll,6686686ll,6686866ll,6688666ll,6688868ll,6688886ll,6866666ll,6866668ll,6866686ll,6866866ll,6868666ll,6868868ll,6868886ll,6886666ll,6886868ll,6886886ll,6888668ll,6888866ll,6888868ll,6888886ll,8666666ll,8666686ll,8666866ll,8668666ll,8668868ll,8686666ll,8686868ll,8686886ll,8688668ll,8688686ll,8688866ll,8688868ll,8688886ll,8866666ll,8866868ll,8866886ll,8868668ll,8868686ll,8868866ll,8868868ll,8868886ll,8886668ll,8886686ll,8886866ll,8886868ll,8886886ll,8888666ll,8888668ll,8888686ll,8888866ll,66666668ll,66666686ll,66666866ll,66666868ll,66666886ll,66668666ll,66668668ll,66668686ll,66668866ll,66686666ll,66686686ll,66686866ll,66688666ll,66688868ll,66688886ll,66866666ll,66866668ll,66866866ll,66868666ll,66868868ll,66886666ll,66886868ll,66886886ll,66888668ll,66888686ll,66888866ll,66888868ll,66888886ll,68666666ll,68666668ll,68666686ll,68668666ll,68668868ll,68668886ll,68686666ll,68686886ll,68688668ll,68688686ll,68688866ll,68688868ll,68688886ll,68866666ll,68866868ll,68868668ll,68868686ll,68868866ll,68868868ll,68886668ll,68886686ll,68886866ll,68886868ll,68886886ll,68888668ll,68888686ll,68888866ll,86666666ll,86666668ll,86666686ll,86666866ll,86668868ll,86668886ll,86686666ll,86686868ll,86686886ll,86688686ll,86688866ll,86688868ll,86688886ll,86866666ll,86866868ll,86866886ll,86868668ll,86868868ll,86868886ll,86886668ll,86886686ll,86886866ll,86886868ll,86886886ll,86888666ll,86888668ll,86888686ll,86888866ll,88666666ll,88666868ll,88666886ll,88668686ll,88668868ll,88668886ll,88686668ll,88686686ll,88686866ll,88686868ll,88686886ll,88688666ll,88688668ll,88688686ll,88688866ll,88866668ll,88866866ll,88866868ll,88866886ll,88868666ll,88868668ll,88868686ll,88868866ll,88886666ll,88886668ll,88886686ll,88886866ll,88888666ll,88888868ll,88888886ll,666666686ll,666666866ll,666666868ll,666666886ll,666668666ll,666668686ll,666668866ll,666686666ll,666686668ll,666686686ll,666686866ll,666688666ll,666688868ll,666688886ll,666866666ll,666866668ll,666866686ll,666866866ll,666868666ll,666868868ll,666868886ll,666886666ll,666886868ll,666886886ll,666888668ll,666888686ll,666888866ll,666888868ll,666888886ll,668666666ll,668666668ll,668666686ll,668666866ll,668668666ll,668668868ll,668668886ll,668686666ll,668686868ll,668686886ll,668688668ll,668688686ll,668688866ll,668688868ll,668688886ll,668866666ll,668866868ll,668866886ll,668868668ll,668868686ll,668868868ll,668868886ll,668886668ll,668886686ll,668886866ll,668886868ll,668886886ll,668888666ll,668888668ll,668888686ll,668888866ll,686666666ll,686666668ll,686666686ll,686666866ll,686668666ll,686668868ll,686668886ll,686686666ll,686686868ll,686686886ll,686688668ll,686688686ll,686688866ll,686688868ll,686688886ll,686866666ll,686866868ll,686866886ll,686868668ll,686868686ll,686868866ll,686868868ll,686868886ll,686886668ll,686886686ll,686886866ll,686886868ll,686886886ll,686888666ll,686888668ll,686888686ll,686888866ll,688666868ll,688666886ll,688668668ll,688668686ll,688668866ll,688668868ll,688668886ll,688686668ll,688686686ll,688686866ll,688686868ll,688686886ll,688688666ll,688688668ll,688688866ll,688866668ll,688866686ll,688866866ll,688866868ll,688866886ll,688868666ll,688868668ll,688868866ll,688886666ll,688886668ll,688886686ll,688886866ll,688888666ll,688888868ll,688888886ll,866666666ll,866666668ll,866666686ll,866666866ll,866668666ll,866668868ll,866668886ll,866686666ll,866686868ll,866686886ll,866688668ll,866688686ll,866688866ll,866688868ll,866688886ll,866866666ll,866866868ll,866866886ll,866868668ll,866868686ll,866868866ll,866868868ll,866868886ll,866886668ll,866886686ll,866886866ll,866886868ll,866886886ll,866888666ll,866888668ll,866888866ll,868666666ll,868666868ll,868666886ll,868668668ll,868668686ll,868668866ll,868668868ll,868686668ll,868686686ll,868686866ll,868686868ll,868686886ll,868688668ll,868688686ll,868688866ll,868866866ll,868866868ll,868866886ll,868868666ll,868868668ll,868868686ll,868868866ll,868886666ll,868886668ll,868886686ll,868886866ll,868888666ll,868888868ll,868888886ll,886666666ll,886666868ll,886666886ll,886668668ll,886668866ll,886668868ll,886668886ll,886686668ll,886686686ll,886686866ll,886686868ll,886686886ll,886688666ll,886688668ll,886688686ll,886688866ll,886866668ll,886866686ll,886866866ll,886866868ll,886866886ll,886868666ll,886868668ll,886868686ll,886868866ll,886886666ll,886886686ll,886886866ll,886888666ll,886888868ll,886888886ll,888666668ll,888666686ll,888666866ll,888666868ll,888666886ll,888668666ll,888668668ll,888668686ll,888668866ll,888686666ll,888686668ll,888686686ll,888686866ll,888688666ll,888688868ll,888688886ll,888866666ll,888866668ll,888866686ll,888866866ll,888868666ll,888868886ll,888886666ll,888886868ll,888886886ll,888888668ll,888888686ll,888888866ll,888888868ll,888888886ll,6666666668ll,6666666686ll,6666666866ll,6666666868ll,6666666886ll,6666668666ll,6666668668ll,6666668686ll,6666668866ll,6666686666ll,6666686668ll,6666686686ll,6666686866ll,6666688666ll,6666688886ll,6666866666ll,6666866686ll,6666866866ll,6666868666ll,6666868868ll,6666868886ll,6666886666ll,6666886868ll,6666886886ll,6666888668ll,6666888686ll,6666888866ll,6666888868ll,6666888886ll,6668666666ll,6668666668ll,6668666866ll,6668668666ll,6668668868ll,6668668886ll,6668686666ll,6668686868ll,6668686886ll,6668688686ll,6668688866ll,6668688868ll,6668688886ll,6668866666ll,6668866868ll,6668866886ll,6668868668ll,6668868686ll,6668868866ll,6668868886ll,6668886668ll,6668886686ll,6668886866ll,6668886868ll,6668886886ll,6668888666ll,6668888668ll,6668888686ll,6668888866ll,6686666666ll,6686666686ll,6686668666ll,6686668868ll,6686668886ll,6686686666ll,6686686868ll,6686686886ll,6686688668ll,6686688686ll,6686688866ll,6686688868ll,6686688886ll,6686866666ll,6686866886ll,6686868668ll,6686868686ll,6686868866ll,6686868868ll,6686868886ll,6686886668ll,6686886686ll,6686886866ll,6686886868ll,6686886886ll,6686888666ll,6686888668ll,6686888686ll,6686888866ll,6688666666ll,6688666868ll,6688668668ll,6688668686ll,6688668866ll,6688668868ll,6688668886ll,6688686668ll,6688686686ll,6688686866ll,6688686868ll,6688686886ll,6688688666ll,6688688668ll,6688688686ll,6688688866ll,6688866668ll,6688866686ll,6688866866ll,6688866868ll,6688866886ll,6688868666ll,6688868668ll,6688868686ll,6688868866ll,6688886666ll,6688886668ll,6688886686ll,6688886866ll,6688888666ll,6688888868ll,6688888886ll,6866666666ll,6866666668ll,6866666686ll,6866666866ll,6866668868ll,6866668886ll,6866686666ll,6866686868ll,6866686886ll,6866688668ll,6866688866ll,6866688868ll,6866688886ll,6866866666ll,6866866868ll,6866866886ll,6866868686ll,6866868866ll,6866868868ll,6866868886ll,6866886668ll,6866886686ll,6866886866ll,6866886868ll,6866886886ll,6866888666ll,6866888668ll,6866888686ll,6866888866ll,6868666666ll,6868666868ll,6868666886ll,6868668668ll,6868668866ll,6868668868ll,6868668886ll,6868686668ll,6868686686ll,6868686866ll,6868686886ll,6868688666ll,6868688668ll,6868688686ll,6868688866ll,6868866668ll,6868866686ll,6868866866ll,6868866868ll,6868866886ll,6868868666ll,6868868668ll,6868868686ll,6868868866ll,6868886666ll,6868886668ll,6868886686ll,6868886866ll,6868888666ll,6868888868ll,6886666666ll,6886666868ll,6886666886ll,6886668668ll,6886668686ll,6886668868ll,6886668886ll,6886686668ll,6886686686ll,6886686866ll,6886686868ll,6886686886ll,6886688666ll,6886688668ll,6886688686ll,6886688866ll,6886866686ll,6886866866ll,6886866868ll,6886866886ll,6886868666ll,6886868668ll,6886868686ll,6886868866ll,6886886666ll,6886886668ll,6886886686ll,6886886866ll,6886888666ll,6886888868ll,6886888886ll,6888666668ll,6888666686ll,6888666866ll,6888666868ll,6888666886ll,6888668666ll,6888668686ll,6888668866ll,6888686666ll,6888686668ll,6888686686ll,6888686866ll,6888688868ll,6888688886ll,6888866666ll,6888866668ll,6888866866ll,6888868666ll,6888868868ll,6888868886ll,6888886666ll,6888886868ll,6888886886ll,6888888668ll,6888888686ll,6888888866ll,6888888868ll,6888888886ll,8666666666ll,8666666668ll,8666666686ll,8666666866ll,8666668666ll,8666668868ll,8666668886ll,8666686868ll,8666686886ll,8666688668ll,8666688686ll,8666688866ll,8666688868ll,8666688886ll,8666866666ll,8666866868ll,8666866886ll,8666868686ll,8666868866ll,8666868868ll,8666868886ll,8666886686ll,8666886866ll,8666886868ll,8666886886ll,8666888666ll,8666888668ll,8666888686ll,8666888866ll,8668666666ll,8668666868ll,8668666886ll,8668668668ll,8668668686ll,8668668866ll,8668668868ll,8668668886ll,8668686668ll,8668686866ll,8668686868ll,8668686886ll,8668688666ll,8668688668ll,8668688686ll,8668688866ll,8668866668ll,8668866686ll,8668866866ll,8668866868ll,8668866886ll,8668868666ll,8668868668ll,8668868686ll,8668868866ll,8668886666ll,8668886668ll,8668886686ll,8668886866ll,8668888868ll,8668888886ll,8686666666ll,8686666886ll,8686668668ll,8686668686ll,8686668866ll,8686668868ll,8686668886ll,8686686668ll,8686686686ll,8686686868ll,8686686886ll,8686688666ll,8686688668ll,8686688686ll,8686688866ll,8686866668ll,8686866686ll,8686866866ll,8686866868ll,8686866886ll,8686868666ll,8686868668ll,8686868866ll,8686886666ll,8686886668ll,8686886686ll,8686886866ll,8686888666ll,8686888868ll,8686888886ll,8688666668ll,8688666686ll,8688666866ll,8688666868ll,8688666886ll,8688668668ll,8688668686ll,8688668866ll,8688686666ll,8688686668ll,8688686686ll,8688686866ll,8688688666ll,8688688868ll,8688688886ll,8688866666ll,8688866686ll,8688866866ll,8688868666ll,8688868868ll,8688868886ll,8688886666ll,8688886868ll,8688886886ll,8688888668ll,8688888686ll,8688888866ll,8688888868ll,8688888886ll,8866666666ll,8866666868ll,8866666886ll,8866668668ll,8866668686ll,8866668866ll,8866668868ll,8866686686ll,8866686866ll,8866686868ll,8866686886ll,8866688668ll,8866688686ll,8866688866ll,8866866668ll,8866866866ll,8866866886ll,8866868666ll,8866868668ll,8866868686ll,8866868866ll,8866886666ll,8866886668ll,8866886686ll,8866886866ll,8866888666ll,8866888868ll,8866888886ll,8868666668ll,8868666686ll,8868666866ll,8868666868ll,8868666886ll,8868668668ll,8868668686ll,8868668866ll,8868686666ll,8868686668ll,8868686686ll,8868686866ll,8868688666ll,8868688868ll,8868688886ll,8868866666ll,8868866668ll,8868866686ll,8868866866ll,8868868666ll,8868868868ll,8868868886ll,8868886666ll,8868886868ll,8868886886ll,8868888668ll,8868888686ll,8868888866ll,8868888868ll,8868888886ll,8886666668ll,8886666686ll,8886666866ll,8886666868ll,8886666886ll,8886668666ll,8886668668ll,8886668686ll,8886668866ll,8886686666ll,8886686668ll,8886686686ll,8886686866ll,8886688666ll,8886688886ll,8886866666ll,8886866668ll,8886866686ll,8886866866ll,8886868666ll,8886868868ll,8886868886ll,8886886666ll,8886886868ll,8886886886ll,8886888686ll,8886888866ll,8886888886ll,8888666666ll,8888666668ll,8888666686ll,8888666866ll,8888668666ll,8888668868ll,8888668886ll,8888686666ll,8888686868ll,8888686886ll,8888688668ll,8888688686ll,8888688866ll,8888688868ll,8888866666ll,8888866868ll,8888866886ll,8888868686ll,8888868866ll,8888868868ll,8888868886ll,8888886668ll,8888886686ll,8888886866ll,8888886868ll,8888886886ll,8888888666ll,8888888686ll,8888888866ll};//}}}
int topn=942;
vector<qword> vec;
qword n,ans;
qword gcd(qword x,qword y)
{
        return (x%y)?gcd(y,x%y):y;
}
qword lcm(qword x,qword y)
{
        qword a=gcd(x,y);
        if (x/100*y/100/a>n/10000)return INFL;
        return x*y/a;
}
qword search_m(int now,int tot,qword v)
{
        qword ret=0;
        if (now==943)
        {
                if (v==1)return 0;
                ret=(tot%2?1:-1)*(n/v);
                return ret;
        }
        ret+=search_m(now+1,tot,v);
        qword t=lcm(num[now],v);
        if (t<=n)
        {
                ret+=search_m(now+1,tot^1,t);
        }
        return ret;
}
int main()
{
        //freopen("input.txt","r",stdin);
        qword i,j,k,x,y;
        bool flag=true;
        qword l,r;
        scanf("%lld%lld",&l,&r);
        for (i=0;i<943/2;i++)
                swap(num[i],num[943-i-1]);
        n=l-1;
        ans-=search_m(0,0,1);
        n=r;
        ans+=search_m(0,0,1);
        cout<<ans<<endl;
/*        for (i=1;i<MAXN;i++)
        {
                x=i;
                y=1;
                flag=true;
                while (x)
                {
                        while (x%10!=6 && x%10!=8)
                        {
                                i+=y;x++;
                        }
                        x/=10;
                        y*=10;
                }
                if (flag)
                {
                        for (j=0;j<vec.size();j++)
                        {
                                if (i%vec[j]==0)
                                {
                                        flag=false;
                                        break;
                                }
                        }
                        if (!flag)continue;
                        cout<<i<<"ll,";
                        vec.push_back(i);
                }
        }*/
}
时间: 2024-10-19 02:44:46

bzoj 1853: [Scoi2010]幸运数字 容斥的相关文章

BZOJ 1853 SCOI2010 幸运数字 容斥原理+DFS

题目大意:求[l,r]区间内有多少个数是只由6和8组成的数的倍数 同2393 链接:http://blog.csdn.net/popoqqq/article/details/41807333 此题数据强力了一些 由于r<=10^10 所以计算LCM的时候会爆long long 于是我们可以用double求出LCM的近似值与r进行比较 如果小于r再取精确值进行计算 此外就是搜索的时候要从大到小搜 从小到大会TLE #include <cstdio> #include <cstring

1853: [Scoi2010]幸运数字[容斥原理]

1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 2405  Solved: 887[Submit][Status][Discuss] Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是“幸运号码”!但是这种“幸运号码”总是太少了,比如在[1,100]的区间内就只有6个(6,8,

AC日记——[SCOI2010]幸运数字 bzoj 1853

1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 2405  Solved: 887[Submit][Status][Discuss] Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是“幸运号码”!但是这种“幸运号码”总是太少了,比如在[1,100]的区间内就只有6个(6,8,

BZOJ-1853: [Scoi2010]幸运数字 (容斥原理)

1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 2947  Solved: 1096[Submit][Status][Discuss] Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是"幸运号码"!但是这种"幸运号码"总是太少

【BZOJ1853/2393】[Scoi2010]幸运数字/Cirno的完美算数教室 DFS+容斥

[BZOJ1853][Scoi2010]幸运数字 Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是“幸运号码”!但是这种“幸运号码”总是太少了,比如在[1,100]的区间内就只有6个(6,8,66,68,86,88),于是他又定义了一种“近似幸运号码”.lxhgww规定,凡是“幸运号码”的倍数都是“近似幸运号码”,当然,任何的“幸运号码”也都是“近似幸运号码”

P2567 [SCOI2010]幸运数字 DFS+容斥定理

P2567 [SCOI2010]幸运数字 题目描述 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是"幸运号码"!但是这种"幸运号码"总是太少了,比如在[1,100]的区间内就只有6个(6,8,66,68,86,88),于是他又定义了一种"近似幸运号码".lxhgww规定,凡是"幸运号码"的倍数

【bzoj1853】 Scoi2010—幸运数字

http://www.lydsy.com/JudgeOnline/problem.php?id=1853 (题目链接) 今天考试考了容斥,结果空知道结论却不会写= = 题意:求区间中不含6,8两个数字及由6,8组成的数字的倍数的的数有几个 Solution  容斥原理.  先把所有的幸运数字都蒯到一个数组里,将两两之间可以整除的数只留下一个小的.  接下来如果暴力组合统计答案的话肯定会TLE,因为就算去掉了可以被整除的数以后还是有1000多个幸运数组.我们考虑dfs,x记录当前已经枚举到了第几个

【bzoj1853】[Scoi2010]幸运数字 容斥原理+搜索

题目描述 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,666,888都是“幸运号码”!但是这种“幸运号码”总是太少了,比如在[1,100]的区间内就只有6个(6,8,66,68,86,88),于是他又定义了一种“近似幸运号码”.lxhgww规定,凡是“幸运号码”的倍数都是“近似幸运号码”,当然,任何的“幸运号码”也都是“近似幸运号码”,比如12,16,666都是“近似幸运号码”. 现在lxhgww

【题解】SCOI2010幸运数字

最近在学习容斥相关,于是就看到了这个题.一开始以为是补集转化,但是观察一下马上发现不可行,好像直接做会比较容易一些.一个数满足要求的充要条件即为是一个幸运数字的倍数,那么容斥可以轻松搞定,只要枚举是一个数字/两个数字/三个数字的倍数--即可.打一个表找出<1e10的所有幸运数--竟然有2043个.不过显然其中互为倍数的那些个我们可以直接删掉其中大一些的那个数.这样删去之后,还剩下943个数. 到这里我突然觉得好懵逼啊--左想右想再也想不出新的优化.于是看题解,发现竟然真的是爆搜加了两个剪枝.其中