Educational Codeforces Round 138 D Counting Arrays

Counting Arrays#

素数

有歧义的数组很难求,但是没有歧义的数组很好求

要使 ai 到第一个位置之前都不能被删掉,则 2i 的所有数字和 aigcd 不等于 1

满足这样的条件,代表包含其 2i 的所有素数因数即可,因此设 2i 质数乘积为 p,不大于 m 的所有满足上述要求的数量为 mp

注意 m 还是挺大的,要记得取模,不要直接乘了

#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
const ll mod = 998244353;

ll gcd(ll a, ll b)
{
    return b == 0 ? a : gcd(b, a % b);
}

ll qpow(ll x, ll n)
{
    ll ans = 1;
    while(n)
    {
        if(n & 1) ans = ans * x % mod;
        n >>= 1;
        x = x * x % mod;
    }
}

int main()
{
    ll n, m;
    cin >> n >> m;
    ll ans = 0, p = 1, now = 1, tot = 0, snow = 1;
    for(int i=1; i<=n; i++)
    {
        if(p <= m)
        {
            ll f = 1;
            for(int j=1; j<i; j++)
                f = max(f, gcd(j, i));
            if(f == 1) p = p * gcd(p, i) * i;
        }
        ll k = m / p % mod;
        now = now * k % mod;
        ans = (ans + now) % mod;
        snow = snow * (m % mod) % mod;
        tot = (tot + snow) % mod;
    }
    ans = (tot - ans + mod) % mod;
    cout << ans << endl;
    return 0;
}
posted @   dgsvygd  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示
主题色彩