标签:十进制 ++ ret efi define template hint 中国 for
1 10
1234 4321
2
809
【数据范围】
对于30%的数据,保证1 < =a < =b < =1000000
对于100%的数据,保证1 < =a < =b < =10000000000
#include <stdio.h> #include <algorithm> #define N 10010 #define L long long template < class T > void EC(T &a , T &b) { T t=a; a=b; b=t; } template < class T > T GD(T a , T b) { return b ? GD(b , a % b) : a; } int _t,_n; bool V[N]; L l , r , A[N] , ans; void PR(int x , L y) { if(y > r) return; if(x) A[++_t] = y; PR(x + 1 , y * 10 + 6); PR(x + 1 , y * 10 + 8); } void DF(int x , int y , L z) { if(x > _n) { if(y) ans += y & 1 ? r / z - (l - 1) / z : (l - 1) / z - r / z; return; } DF(x + 1 , y , z); L t = z / GD(z , A[x]); if(((double)A[x] * t) <= r) DF(x + 1 , y + 1 , A[x] * t); } int main() { scanf("%lld%lld" , &l , &r); PR(0 , 0); std::sort(A + 1 , A + _t + 1); for(int i = 1;i <= _t;i++) if(!V[i]) { A[++_n]=A[i]; for(int j = i + 1;j <= _t;j++) if(A[j] % A[i] == 0) V[j]=1; } for(int i = 1;i + i <= _n;i++) EC(A[i],A[_n-i+1]); DF(1 , 0 , 1); printf("%lld\n",ans); return 0; }
[bzoj1853][Scoi2010][幸运数字] (容斥原理)
标签:十进制 ++ ret efi define template hint 中国 for
原文地址:http://www.cnblogs.com/keshuqi/p/6358955.html