河南萌新联赛2025第(四)场:河南大学
文章目录
Trailing Zeroes (III)
来源:Trailing Zeroes (III) | LightOJ
本题较为模板(但对我来说也不代表就简单),主要是给B题做铺垫。
思路
要找0的个数,我们都知道一个10一定是同时有2和5才行,但是我们会发现只要有5的地方必定有很多的2,所以就把问题转化成了:找到最小的N使N!的个数为m个。
- 5的个数满足要求
- 二分答案找到最小的N
代码
// Problem: Trailing Zeroes (III)
// Contest: LightOJ
// URL: https://lightoj.com/problem/trailing-zeroes-iii
// Memory Limit: 64 MB
// Time Limit: 1000 ms
// Submission Time: 2025-08-07 10:43:43
int count(int x)
{
int cnt=0;
while(x>0)// x/5+x/25+···每多一个5的次方就会多贡献一次
{
x/=5;
cnt+=x;
}
return cnt;
}
int check(int m)//二分找到最小的符合的那个数
{
int l=1,r=5*m;
int ans=-1;
while(l<=r)
{
int mid=(l+r)/2;
int cnt=count(mid);
if(cnt==m)
{
ans=mid;
r=mid-1;
}
else if(cnt<m)
l=mid+1;
else r=mid-1;
}
return ans;
}
void solve()
{
cin>>n;
for(int i=1;i<=n;i++)//2总比5多,找5的个数就是0的个数
{
cin >> m;
cout << "Case " << i << ": ";
int x=check(m);
if(x==-1)
cout << "impossible" << endl;
else
cout << x << endl;
}
}
B、0!!!!!
来源:B-0!!!!!_河南萌新联赛2025第(四)场:河南大学
思路
- 要找0的个数还是和刚才那样找2和5的个数,不同的是这次是因数中,2不一定多于5了
- 一直计算2的幂,只要在y之内都会算上
- 之后就用分块算 2i 总共有多少就行了
代码
int f(int x, int y)//要找的数、右边界
{
int ans=0;
for(int i=x; i<=y; i*=x)//x^k次方
{
int n=y/i;
for(int l=1; l<=n; l++)//分块计算
{
int r=n/(n/l);
ans+=(n/l)*(r-l+1);
l=r;
}
}
return ans;
}
void solve()
{
cin >> l >> r;
int f2=f(2,r)-f(2,l-1);
int f5=f(5,r)-f(5,l-1);
cout << min(f2,f5);
}
D、箭头谜题Ⅰ
来源:D-箭头谜题Ⅰ_河南萌新联赛2025第(四)场:河南大学
思路
其实大思路并不难,就是一个普通的BFS,最后检查终点状态就行了。开始我还以为是用DFS,但是如果不是最短路的话可能会浪费魔法次数
- 用二维vector去存图,不然内存会超
- 利用双端队列根据魔法的使用改变此路径的优先级
- 最后只用检查终点状态是否符合条件就行了
代码
// Problem: 箭头谜题Ⅰ
// Contest: NowCoder
// URL: https://ac.nowcoder.com/acm/contest/115184/D
// Memory Limit: 512 MB
// Time Limit: 2000 ms
// Submission Time: 2025-08-07 13:23:42
string idx="UDLR";//上下左右
struct pi
{
int x,y,st;
}p[N];
vector<pii> d={
{
-1,0},{
1,0},{
0,-1},{
0,1}};
void solve()
{
cin >> n >> m >> k;//此题为多实例,最好都开里面
vector<string> v(n);
vector<vector<int>> vis(n,vector<int>(m,-1));//由于n,m最大都是1e6只能开vector
for(int i=0; i<n; i++) cin >> v[i];
deque<pi> q;
q.push_back({
0,0,0});//x,y,step
while(!q.empty())
{
int x=q.front().x
河南萌新联赛2025第(四)场算法题解析

最低0.47元/天 解锁文章
1354

被折叠的 条评论
为什么被折叠?



