学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!
附上汇总贴:小猴编程C++ | 汇总-CSDN博客
【题目描述】
有 n 只青蛙,编号为 1∼n(第 i 只青蛙的编号为 i),他们最初都位于 0 点。
每秒钟,第 i 只青蛙向前跳跃的长度 di。这些青蛙准备沿着一条直线回家(所有青蛙的跳跃方向是相同的)。
在任何青蛙跳跃之前,小猴想在某一个整数坐标上放置一个捕捉器,用来捕捉经过这个点的青蛙(跳跃停留该位置上的青蛙)。
小猴只能在坐标 1∼n 之间的点放置一个捕捉器,请你帮助小猴计算最多可以捕捉多少只青蛙。
【输入】
第一行,包含一个整数 n。
第二行,包含 n 个整数 d1,d2,…,dn。
【输出】
一行一个整数,表示答案。
【输入样例】
5
1 2 3 4 5
【输出样例】
3
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int n, d, cnt[200005], maxn=0, b[200005];
int main()
{
cin >> n;
for (int i=1; i<=n; i++) {
cin >> d;
if (d>n) continue;
b[d]++;
}
for (int i=1; i<=n; i++) {
for (int j=1; i*j<=n; j++) {
cnt[i*j]+=b[i];
}
}
for (int i=1; i<=n; i++) {
maxn = max(maxn, cnt[i]);
}
cout << maxn << endl;
return 0;
}
【运行结果】
5
1 2 3 4 5
3