Codeforces1114C Trailing Loves (or L'oeufs?)
2024-09-03 03:05:16
链接:http://codeforces.com/problemset/problem/1114/C
题意:给定数字$n$和$b$,问$n!$在$b$进制下有多少后导零。
寒假好像写过这道题当时好像完全不会,之后也没记住写法,今天想做这场的F题看到这道顺便就给切了。
思路:能有后导零就说明$n!$能整除$b$,然后就是求$n!$的阶乘里面$b$的幂次有多少。先分解一下$b$求一下素因子及次数。在对$n!$求一下有素因子的幂次是多少,取比值最小的就是答案。
注意求$n!$里面素因子的幂次时可能会溢出,乘法变成除法即可。
#include <bits/stdc++.h>
#define ll long long
using namespace std; const int N = 1e5 + ;
pair<ll, ll> p[N];
int cnt; ll C(ll x, ll p) {
ll res = ;
ll temp = p;
while (x >= temp) {
res += x / temp;
if (x / p < temp) break;
temp *= p;
}
return res;
} int main() {
ll n, b;
scanf("%lld%lld", &n, &b);
for (ll i = ; i * i <= b; i++) {
if (b % i == ) {
p[++cnt].first = i;
p[cnt].second = ;
while (b % i == ) { p[cnt].second++; b /= i; }
}
}
if (b != ) { p[++cnt].first = b; p[cnt].second = ; }
ll ans = 1e18;
for (int i = ; i <= cnt; i++) {
ll res = C(n, p[i].first);
ans = min(ans, res / p[i].second);
}
cout << ans << '\n';
return ;
}
最新文章
- Sass之坑Compass编译报错
- jquery easyui使用(一)&#183;&#183;&#183;&#183;&#183;&#183;可折叠面板的布局,手风琴
- Microsoft Dynamics CRM 分销行业解决方案
- .NET转JAVA之拼音组件
- emacs入门
- 有序列表和无序列表、流、格式布局:position
- VS2013以管理员身份使用
- SQL面试题收录
- Java字符串操作及与C#字符串操作的不同
- SqlServer 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
- DBLinq (MySQL exactly) Linq To MySql(转)
- 可变码率(英语:Variable bitrate,简称VBR)介绍
- MT【18】幂平均不等式的证明
- 20155231 2016-2017-2 《Java程序设计》第6周学习总结
- Real-time qPCR So Easy?
- MongoDB学习笔记(2)
- 這是我既C語言作業寫博客後寫的第一篇博客
- django导入/导出原始数据
- 在vsagent上运行.dll录制文件。
- Windows编程中回调函数的使用心得(MFC篇)