社区讨论

求调!!Qwq

P1069[NOIP 2009 普及组] 细胞分裂参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mdfkig2f
此快照首次捕获于
2025/07/23 14:13
8 个月前
此快照最后确认于
2025/11/04 03:53
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n;
int m1, m2;
int s[30005];
vector<pair<int, int>> mm;
signed main()
{
    cin >> n;
    cin >> m1 >> m2;
    for (int i = 1; i <= n; i++)
        cin >> s[i];
    int ks = m1;
    for (int i = 2; i <= sqrt(m1); i++)
    {
        int cnt1 = 0;
        while (ks % i == 0 && ks)
        {
            cnt1++;
            ks /= i;
        }
        mm.push_back({i, cnt1 * m2});
    }
    bool can = false;
    int ans = 0;
    int cnt_mm = 1;
    for (int i = 1; i <= n; i++)
    {
        int tmp = 0;
        for (int j = 2; j <= sqrt(s[i]); j++)
        {
            if (mm[cnt_mm].first != j)
                continue;
            else
                cnt_mm++;
            if (s[i] % j != 0)
                continue;
            if (!can)
                can = true;
            int k = mm[cnt_mm - 1].second;
            int ks = s[i];
            int cc = 0;
            while (ks && ks % j == 0)
                cc++, ks /= j;
            double k_ = k;
            double cc_ = cc;
            int kkk = ceil(1.0 * k_ / cc_);
            tmp = max(tmp, kkk);
        }
        ans = max(tmp, ans);
    }
    if (!can)
        cout << -1 << endl;
    else
        cout << ans + 1 << endl;
}
3*RE
2*AC
5*WA
20pts

回复

0 条回复,欢迎继续交流。

正在加载回复...