码迷,mamicode.com
首页 > 其他好文 > 详细

1104.整除问题

时间:2018-10-02 17:48:53      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:msu   main   不能   sim   turn   \n   class   bsp   microsoft   

题目描述:

给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。

输入:

两个整数n(2<=n<=1000),a(2<=a<=1000)

输出:

一个整数.

样例输入:
6 10
样例输出:
1


#include<stdio.h>
#include<string.h>
bool mark[1010];
int prime[1010];
int primesize;
void init(){
    primesize=0;
    for(int i=2;i<=1000;i++){
        if(mark[i]) continue;
        mark[i]=true;
        prime[primesize++]=i;
        for(int j=i*i;j<=1000;j+=i){
            mark[j]=true;
        }
    }
}

int cnt[1010];
int cnt2[1010];
int main(){
    int n,a;
    init();
    while(scanf("%d%d",&n,&a)==2){
        for(int i=0;i<primesize;i++)
        cnt[i]=cnt2[i]=0;
        for(int i=0;i<primesize;i++){
            int t=n;
            while(t){
                cnt[i]+=t/prime[i];
                t=t/prime[i];
            }
        }
        int ans=123123123;
        for(int i=0;i<primesize;i++){
            while(a%prime[i]==0){
                cnt2[i]++;
                a/=prime[i];
            }
            if(cnt2[i]==0) continue;
            if(cnt[i]/cnt2[i]<ans) ans=cnt[i]/cnt2[i];
        }
        printf("%d\n",ans);
    }
    return 0;
}

 

1104.整除问题

标签:msu   main   不能   sim   turn   \n   class   bsp   microsoft   

原文地址:https://www.cnblogs.com/bernieloveslife/p/9736489.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!