肝了两题...
T1一眼题,分解质因数,找出2的个数和5的个数取min输出
#include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<algorithm> #define ll long long using namespace std; const int maxn=1000010,inf=1e9; int n,m,T; int fac2[maxn],fac5[maxn]; void read(int &k) { int f=1;k=0;char c=getchar(); while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar(); while(c<='9'&&c>='0')k=k*10+c-'0',c=getchar(); k*=f; } int main() { freopen("zero.in","r",stdin); freopen("zero.out","w",stdout); read(T); for(int i=1;i<=1000000;i++) { int x=i;fac2[i]=fac2[i-1];fac5[i]=fac5[i-1]; for(;(x&1)==0;x>>=1)fac2[i]++; for(;x%5==0;x/=5)fac5[i]++; } while(T--) { read(m);read(n); int cnt2=fac2[m]-fac2[n]-fac2[m-n]; int cnt5=fac5[m]-fac5[n]-fac5[m-n]; printf("%d\n",min(cnt2,cnt5)); } return 0; }