https://vjudge.net/contest/311332#overview
A CodeForces 1114C
zzy的神奇横跳真是太神奇啦!
btw,好好理解下质因数分解!!
b
=
a
1
k
∗
a
2
l
∗
a
3
m
…
…
a
n
?
b = a1^k*a2^l*a3^m……an^?
b=a1k∗a2l∗a3m……an?
所以影响b的个数的,就只是k、m、l……?中,最小的啦!
//zzy666
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,b,a[1000000],s[1000000],k[1000000];
int main(){
scanf("%lld%lld",&n,&b);
ll cnt = 0,tmp = b,ans = 1e18;
//fen jie zhi yin shu
for(ll i = 2; i<=sqrt(tmp); i ++){
if (b%i == 0){
a[++cnt] = i;//这样下标是从1开始的哦
while(b%i == 0){
b /= i;
k[cnt] ++;
}
}
}
//万一b是个大质数。。。
if (b != 1) a[++cnt] = b, k[cnt]++;
//
for(int i = 1;i <= cnt;i ++){
ll kk = 0,nn = n;
while( nn != 0){
nn /= a[i];//每次都多跳一倍
kk += nn;
}
ans = min(ans,kk/k[i]);//神奇操作
}
printf("%lld",ans);
return 0;
}
C CodeForces 1114B
每m个最大值,就打印一下下标,就好了 !
本次真的挺水呢~
神奇的读题速度让自己第二次拿了个水题一血!
立下新的学习flag:区间dp。
// 话说自己真的不是很会写dp这种很重要的东西啊。。。