肝了两题...

  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;
}
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-11
  • 2022-12-23
  • 2022-01-17
猜你喜欢
  • 2021-10-04
  • 2022-12-23
  • 2021-12-17
  • 2021-09-03
  • 2021-05-22
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案