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,...