#include<bits/stdc++.h>
using namespace std;
const long long mod = 998244353;
typedef const long long ll;
vector<long long>p;
long long inv(long long x,long long y)//快速幂求逆元模板(以乘代除)
{
    long long r=1;
    while(y>0)
    {
        if(y&1)
            r=(r*x)%mod;
        y>>=1;
        x=x*x%mod;
    }
    return r;
}
long long solve(long long n,long long r)//容斥原理求指定区间内与n互素的数的个数模板
{
    p.clear();
    for(long long i=2;i*i<=n;i++)
    {
        if(n%i==0)
            p.push_back(i);//将素因子放入向量
        while(n%i==0)
            n/=i;
    }
    if(n>1)
        p.push_back(n);//如果还有剩余的素因子
    long long sum=0;
    for(int msk=1;msk<(int)(1<<p.size());msk++)
    {
        long long mult=1ll;
        int bits=0;
        for(int i=0;i<(ll)p.size();i++)
        {
            if(msk&(1<<i))
            {
                bits++;
                mult*=p[i];
            }
        }
        ll cur=r/mult;
        if(bits&1)//奇加偶减
            sum=(sum+(mult*mult%mod)*(cur*(cur+1)%mod*(2*cur+1)%mod*inv(6,mod-2)%mod)%mod)%mod;//平方和公式
        else
            sum=(sum-(mult*mult%mod)*(cur*(cur+1)%mod*(2*cur+1)%mod*inv(6,mod-2)%mod)%mod+mod)%mod;
    }
    return sum;
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        long long n;
        scanf("%lld",&n);
        long long sum=0;
        sum=((n)*(n+1)%mod*(2*n+1)%mod*inv(6,mod-2))%mod;//sigema(1~k)i^2=(k)*(k+1)*(2*k+1)/6
        long long res=(sum-solve(n,n)+mod)%mod;/*求指定区间内与n互素的数的个数:
给出整数n和r。求区间[1;r]中与n互素的数的个数。
去解决它的逆问题,求不与n互素的数的个数。
考虑n的所有素因子pi(i=1…k)
在[1;r]中有多少数能被pi整除呢?它就是:
然而,如果我们单纯将所有结果相加,会得到错误答案。有些数可能被统计多次(被好几个素因子整除)。所以,我们要运用容斥原理来解决。
我们可以用2^k的算法求出所有的pi组合,然后计算每种组合的pi乘积,通过容斥原理来对结果进行加减处理。
关于此问题的最终实现*/
        printf("%lld\n",res);
    }
    return 0;
}
//https://blog.csdn.net/m0_37286282/article/details/78869512(容斥原理详解)

2017乌鲁木齐区域赛K(容斥原理【求指定区间内与n互素的数的个数】)的更多相关文章

  1. 求指定区间内与n互素的数的个数 容斥原理

    题意:给定整数n和r,求区间[1, r]中与n互素的数的个数. 详细见容斥定理 详细代码如下 int solve(int r, int n) { vector<int>p; p.clear ...

  2. Uva10820 欧拉公式模板(求小于n且与n互素的数的个数)

    题意: 给出n,算出小于等于n的所有数中,有几对互质: 解法: 本质就是求有多少个2元组(x,y)满足:1 <= x,y <= n,且x与y互素. 除了(1,1)之外,其他所有的x和y都不 ...

  3. 2017乌鲁木齐区域赛D题Fence Building-平面图的欧拉公式

    这个题B站上面有这题很完整的分析和证明,你实在不懂,可以看看这个视频  https://www.bilibili.com/video/av19849697?share_medium=android&a ...

  4. 2017乌鲁木齐区域赛A(动态规划,组合数学,期望)

    #include<bits/stdc++.h>using namespace std;double c[110][110];double g[110];double dp[110][110 ...

  5. 2017乌鲁木齐区域赛I(带权并查集)

    #include<bits/stdc++.h>using namespace std;int f[200010];//代表元long long rl[200010];//记rl[i]为结点 ...

  6. 单调队列——求m区间内的最小值

    单调队列,顾名思义是指队列内的元素是有序的,队头为当前的最大值(单调递减队列)或最小值(单调递增序列),以单调递减队列为例来看队列的入队和出队操作: 1.入队: 如果当前元素要进队,把当前元素和队尾元 ...

  7. P1886 滑动窗口&&P1440 求m区间内的最小值

    声明:下面这两个题就不要暴力了,学一学单调队列吧 推荐博文:https://www.cnblogs.com/tham/p/8038828.html 单调队列入门题 P1440 求m区间内的最小值 题目 ...

  8. HDU-1695 GCD(求一个区间内与一个数互质的个数)

    题意: 给你一个T,是样例的个数,接下来是五个数l1,r1,l2,r2,k  前四个数代表两个区间(l1,r1),(l2,r2)这个题l1=1,l2=1; 取x1属于(1,r1),x2属于(1,r2) ...

  9. LG1440 求 m 区间内的最小值

    题目描述 一个含有 \(n\) 项的数列 (\(n≤ 2000000\)),求出每一项前的 \(m\) 个数到它这个区间内的最小值.若前面的数不足 \(m\) 项则从第 \(1\) 个数开始,若前面没 ...

随机推荐

  1. mybatis学习(四)

    创建mybatis工程 工程目录: 具体步骤: 1.创建sqlMapConfig.xml文件,配置mybatis的运行环境,事物,数据源,加载mapper映射文件等. 2.创建po类(查询或者返回的属 ...

  2. django使用html模板减少代码

    看下面两个页面: —————————————————————————————————————————————————————————————————————————————————— 一个显示文章列表 ...

  3. php 微信公众平台开发之微信群发信息

    这篇文章主要为大家详细介绍了php微信公众平台开发之微信群发信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.目的 完成在微信公众号中群发消息.这里只是完成简单的文字发送.也可以发送语音图片 ...

  4. 【Codeforces Round #466】E. Cashback DP+ST表

    题意 给定$n$个数,将其划分成若干个连续的子序列,求最小价值,数组价值定义为,数组和减去$\lfloor \frac{k}{c} \rfloor$,$k$为数组长度,$c$为给定数 可以列得朴素方程 ...

  5. 菜单栏(QMenuBar)与菜单(QMenu)

    之前一直搞不清楚什么是菜单栏,后来看了文档才知道是怎么一回事,下面是我本人对菜单栏和菜单的理解,可能存在理解错误. 一.菜单栏 菜单栏是容纳菜单的一个容器,里面可以存放菜单列表,用菜单栏的目的就是为了 ...

  6. ubuntu 上采用nginx做rtmp 直播 服务器

    首先安装必要的依赖库   sudo apt-get install autoconf automake sudo apt-get install libpcre3 libpcre3-dev   安装 ...

  7. ACM学习历程—HDU1023 Train Problem II(递推 && 大数)

    Description As we all know the Train Problem I, the boss of the Ignatius Train Station want to know  ...

  8. bzoj 1242 弦图判定 MCS

    题目大意: 给定一张无向图,判断是不是弦图. 题解: 今天刚学了<弦图与区间图> 本来写了一个60行+的学习笔记 结果因为忘了保存重启电脑后被还原了... 那就算了吧. MCS最大势算法, ...

  9. 标准模板库(STL)学习指南之map映射

    转载自CSDN博客:http://blog.csdn.net/bat603/article/details/1456141 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关 ...

  10. Linux ssh 不需要输入密码的方法

    采用证书的方法可以解决ssh不需要输入密码的问题. 本文采用CentOS的操作系统,创建SSH的key,并在两台或多台机器间实现信任.从而实现SSH登录不需要输入密码的功能. 首先,在一台机器上创建S ...