bzoj1853 scoi2010 幸運數字

2021-07-26 20:55:45 字數 1539 閱讀 6596

time limit: 2 sec  

memory limit: 64 mb

submit: 2269  

solved: 829 [

submit][

status][

discuss]

在中國,很多人都把6和8視為是幸運數字!lxhgww也這樣認為,於是他定義自己的「幸運號碼」是十進位制表示中只包含數字6和8的那些號碼,比如68,666,888都是「幸運號碼」!但是這種「幸運號碼」總是太少了,比如在[1,100]的區間內就只有6個(6,8,66,68,86,88),於是他又定義了一種「近似幸運號碼」。lxhgww規定,凡是「幸運號碼」的倍數都是「近似幸運號碼」,當然,任何的「幸運號碼」也都是「近似幸運號碼」,比如12,16,666都是「近似幸運號碼」。現在lxhgww想知道在一段閉區間[a, b]內,「近似幸運號碼」的個數。

輸入資料是一行,包括2個數字a和b

輸出資料是一行,包括1個數字,表示在閉區間[a, b]內「近似幸運號碼」的個數

【樣例輸入1】

1 10

【樣例輸入2】

1234 4321

【樣例輸出1】

2【樣例輸出2】

809【資料範圍】

對於30%的資料,保證1 < =a < =b < =1000000

對於100%的資料,保證1 < =a < =b < =10000000000

day1 [

submit][

status][

discuss]

方法1:暴力容斥,在lcm>b時剪枝,複雜度o(玄學)

方法2:前若干個容斥(我選不超過100000的所有數),後面直接暴力,複雜度o(玄學)(比上面的低)

**:

#include#include#include#include#include#define lbt(i) ((i)&(-(i)))

using namespace std;

typedef long long ll;

const int mx=20100,a=(1<<9)-1;

mapvis;

ll q[mx],s[mx];

ll ans,b,u;

int sc;

inline ll lcm(ll a,ll b)

q[++t]=r*10+6;

q[++t]=r*10+8;

bool ***=true;

for(int i=1;i<=sc;i++)

if(r%s[i]==0)

if(***)s[++sc]=r;

} for(int i=0;iu)break;

q[++t]=r*10+6;

q[++t]=r*10+8;

bool ***=true;

for(int i=1;i<=sc;i++)

if(r%s[i]==0)

if(***)

if(***1&&!vis[tmp])

}} }

return ans;

}int main()

BZOJ 1079 SCOI2008 著色方案

題目 分析 一看就覺得是dp或者直接排列組合公式或者容斥?我就只想到dp的,我們用dp i j 表示前i種顏色,排列出有j對相鄰一樣顏色的方案數。當出現乙個新的顏色時,我們把這個顏色插板法插進去,我們要列舉插入的方式,可能插到相鄰顏色一樣的中間,或者不是,然後進行狀態轉移.具體看 include i...

BZOJ1066 SCOI2007蜥蜴 最大流

挺顯然的最大流,源向所有有蜥蜴的點連inf邊,所有點拆成入點和出點,入店向出點連流量為高度的邊,限制流量,所有可以一步跳出去的點向匯連inf邊,跑最大流就行了。include include include define inf 99999999 define maxn 1005 using nam...

BZOJ1079 SCOI2008著色方案 DP

只能想到 5 15 的方法。我們要利用起 ci比較小這個性質,f a b c d e last 表示有a 種顏色用了1個,b種顏色用了2個 上一次染色用的是剩餘 last 個的顏色,轉移就是f a,b,c,d,e,last a last 2 f a 1,b,c,d,e b last 3 f a 1,...