LGP7704题解
来一个特别暴力的做法。
首先,如果删掉 \(x\) 和 \(y\) 的效果一定和删掉 \(xy\) 的效果相同,且代价一定不大于后者。
于是我们只删除质数,题目就变成了寻找 \(i!(1 \leq i \leq \max n)\) 中有多少个质数出现了奇数次。
给差分一下,变成求 \(i\) 的质因子分解。
有人可能会认为这里需要用到 PR,其实并不需要,因为所有的 \(i \leq \max n\),所以只需要记录下每一个 \(i\) 最小的质因子,然后直接跳即可。
复杂度的话,\(i\) 的质因子总数一定不超过 \(\log_2 i\)(最坏情况是存在一个 \(k\) 使得 \(i=2^k\)),所以复杂度是 \(O(n\log \log n+T)\) 的,且常数较小
加上 快读&快输&加减法优化&整数除法转实数乘法&预处理逆元 后最大点才 349ms,轻松通过。
ps:这题思维难度和代码难度都不高,评绿吧。。。
#include<cstdlib>
#include<cstdio>
#include<cctype>
const int M=5e6+5,mod=998244353;
int T,n,k,top,p[M],ans[M],pri[M],pos[M];bool vis[M];
double inv[M];
inline int read(){
int n=0;char s;
while(!isdigit(s=getchar()));
while(n=n*10+(s^48),isdigit(s=getchar()));
return n;
}
inline void write(int n){
char s[10];int top=0;
while(s[++top]=n%10^48,n/=10);
while(putchar(s[top]),--top);
}
inline int Add(const int&a,const int&b){
return a+b>=mod?a+b-mod:a+b;
}
inline int Del(const int&a,const int&b){
return b>a?a-b+mod:a-b;
}
inline int pow(int a,int b){
int ans=1;
for(;b;b>>=1,a=1ll*a*a%mod)if(b&1)ans=1ll*ans*a%mod;
return ans;
}
inline void sieve(const int&M){
register int i,j,x;
for(i=2;i<=M;++i){
ans[x=i]=ans[i-1];
if(!pos[i]){
pri[pos[i]=++top]=i;inv[top]=1./i+1e-15;
ans[i]=Add(ans[i],p[top]=pow(i,k));vis[top]=1;
}
else{
while(x^1){
ans[i]=(vis[pos[x]]^=1)?Add(ans[i],p[pos[x]]):Del(ans[i],p[pos[x]]);
x=x*inv[pos[x]];
}
}
for(j=1;(x=i*pri[j])<=M;++j)if((pos[x]=j)==pos[i])break;
}
}
signed main(){
register int i;
T=read();k=read();sieve(read());
while(T--)write(ans[read()]),putchar(10);
}
LGP7704题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- ObjectInputStream java.io.StreamCorruptedException: invalid type code: AC问题解决
感谢原文作者:攻城狮_无名 原文链接:https://blog.csdn.net/mingyang_2016/article/details/75208117 问题描述: 每次向一个文件中序列化对象时 ...
- Java中的输入流与输出流
一.流的概念 在Java中,流是从源到目的地的字节的有序序列.Java中有两种基本的流--输入流(InputStream)和输出流(OutputStream). 根据流相对于程序的另一个端点的不同,分 ...
- NSPredicate类,指定过滤器的条件---董鑫
/* 比较和逻辑运算符 就像前面的例子中使用了==操作符,NSPredicate还支持>, >=, <, <=, !=, <>,还支持AND, OR, NOT(或写 ...
- Java-基于JDK的动态代理
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11686615.html 简单的记录一下Java中自带动态代理的用法. 准备材料: 1.一个接口 ...
- linux内存不足时,为了防止报错,可以使用swap
1. 创建分区文件, 大小 2G dd if=/dev/zero of=/swapfile bs=1k count=2048000 2. 生成 swap 文件系统 mkswap /swapfile 3 ...
- 线性结构和非线性结构、稀疏数组、队列、链表(LinkedList)
一.线性结构和非线性结构 线性结构: 1)线性绪构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 2)线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构.顺序存储的线性表称为顺 ...
- Solution -「UOJ #450」复读机
\(\mathcal{Description}\) Link. 求从 \(m\) 种颜色,每种颜色无限多的小球里选 \(n\) 个构成排列,使得每种颜色出现次数为 \(d\) 的倍数的排列方案 ...
- [源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (4)
[源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (4) 目录 [源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (4) 0x00 摘要 0x01 总体流程 ...
- Spring Security即将弃用WebSecurityConfigurerAdapter配置类
用过WebSecurityConfigurerAdapter的都知道对Spring Security十分重要,总管Spring Security的配置体系.但是马上这个类要废了,你没有看错,这个类将在 ...
- 数字化转型——医院数字化管理平台HDMP建设历程
最近几年一直在做医疗行业的B端应用,在搭建医院数字化转型管理平台的过程中累积了一些知识,准备抽时间不断的把整个平台搭建过程及思想记录下来,帮助自己记忆,也希望对相应知识点有需要的伙伴能有一个启发. ...