分析:
举个样例xxx(三位数)为魔力数,则xxx|(xxx+1000*y),那么xxx|1000,这个就是结论
同理:四位数xxxx|10000,五位数xxxxx|100000
代码:
#include<iostream> #include<cstdio> #include<cmath> #include<map> #include<queue> #include<cstring> #include<algorithm> typedef long long LL; using namespace std; const int maxn=600005; LL p[maxn]; int main() { LL a,b; while(~scanf("%lld%lld",&a,&b)) { LL cnt=0; for(LL i=10;i<1000000000000;i*=10) { for(LL j=10;j>1;j--) if(i%j==0&&i/j>=i/10)p[cnt++]=i/j; } sort(p,p+cnt); LL ans=upper_bound(p,p+cnt,b)-lower_bound(p,p+cnt,a); printf("%lld ",ans); } return 0; }