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 & ...
随机推荐
- 21个实用便利的PHP代码
转载请注明来源:https://www.cnblogs.com/hookjc/ 1. PHP可阅读随机字符串 此代码将创建一个可阅读的字符串,使其更接近词典中的单词,实用且具有密码验证功能. /*** ...
- Kubectl —— 基本命令
Kubectl -- 基本命令 1.kubectl 基本命令 2.项目的生命周期 3.声明式管理方法 service的类型: ClusterIP:提供一个集群内部的虚拟IP以供Pod访问( servi ...
- 直接引入vue.js和使用vue脚手架的区别?
脚手架工具搭建的项目是把Vue作为一个模块(如CommonJS规范的模块)对待,在源码中引入vue模块,最终需要用构建工具(如webpack)载入模块,编写代码需要require('vue'). 而直 ...
- java中LinkedList ArrayList 数组 HashSet 存储数据测试
话不多少,直接上代码 import java.text.SimpleDateFormat;import java.util.*; public class testList { public stat ...
- Vue中组件通信的几种方法(Vue3的7种和Vue2的12种组件通信)
Vue3组件通信方式: props $emit expose / ref $attrs v-model provide / inject Vuex 使用方法: props 用 props 传数据给子组 ...
- Sunlogin RCE漏洞分析和使用
介绍 前两天网上曝出了关于向日葵远控工具(Sunlogin)Windows个人版的RCE漏洞POC.因为利用简单并且网上出现了公开的自动化扫描脚本,所以测试的人很多,也出现了一些真实攻击.漏洞的问 ...
- suse 12 脚本部署docker(二进制文件)
suse-linux:~ # cat /etc/issue Welcome to SUSE Linux Enterprise Server 12 SP3 (x86_64) - Kernel \r (\ ...
- zabbix-agentd;客户端开启多个端口。
学习标杆:https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/8/html/configuring_basic ...
- seaborn学习笔记(四):箱型图、小提琴图
html { font-family: sans-serif; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100% } body { ...
- Spring Boot 启动特别慢的问题
Q:debug模式下代码编译没有问题,本来10 ms左右可以启动的项目,却耗时了3000多ms,why? A:删除项目中的断点,留几个要用的就行. 至于怎么一键删除所有断点,请自行搜索! 一度以为我的 ...