[LOJ#6053]简单的函数 题解
最近在搞min_25筛,就写几道筛法题吧
模板题,直接套板子就好了
//waz #include <bits/stdc++.h>using namespace std;#define mp make_pair #define pb push_back #define fi first #define se second #define ALL(x) (x).begin(), (x).end() #define SZ(x) ((int)((x).size()))typedef pair<int, int> PII; typedef vector<int> VI; typedef long long int64; typedef unsigned int uint; typedef unsigned long long uint64;#define gi(x) ((x) = F()) #define gii(x, y) (gi(x), gi(y)) #define giii(x, y, z) (gii(x, y), gi(z))int F() {char ch;int x, a;while (ch = getchar(), (ch < '0' || ch > '9') && ch != '-');if (ch == '-') ch = getchar(), a = -1;else a = 1;x = ch - '0';while (ch = getchar(), ch >= '0' && ch <= '9')x = (x << 1) + (x << 3) + ch - '0';return a * x; }const int mod = 1e9 + 7;int inc(int a, int b) { a += b; return a >= mod ? a - mod : a; }int dec(int a, int b) { a -= b; return a < 0 ? a + mod : a; }int fpow(int a, int x) {int ret = 1;for (; x; x >>= 1){if (x & 1) ret = 1LL * ret * a % mod;a = 1LL * a * a % mod;}return ret; }const int N = 1e5 + 10;int64 n;int p[N], pt, sump[N], sumf[N];bool fg[N];int sqrtn;namespace work1 { int f1[N << 1], f2[N << 1]; int id1[N], id2[N], idt;int64 num[N << 1];int id(int64 x) { if (x <= sqrtn) return id1[x]; else return id2[n / x]; }void solve(){idt = 0;for (int64 i = 1, j; i <= n; i = j + 1){int64 t = n / i;j = n / t;if (t <= sqrtn) id1[t] = ++idt;else id2[n / t] = ++idt;num[idt] = t;int64 c = t % mod;f1[idt] = (c * (c + 1) / 2 + mod - 1) % mod;f2[idt] = c - 1;}for (int j = 1; j <= pt; ++j){int64 end = 1LL * p[j] * p[j];for (int k = 1; num[k] >= end; ++k){int i = id(num[k] / p[j]);f1[k] = dec(f1[k], 1LL * dec(f1[i], sump[j - 1]) * p[j] % mod);f2[k] = dec(f2[k], 1LL * dec(f2[i], j - 1));}}}int query(int64 x) { return inc(dec(f1[id(x)], f2[id(x)]), 2 * (x >= 2)); } }namespace work2 {int g[N << 1];int id1[N], id2[N], idt;int64 num[N << 1];int id(int64 x) { if (x <= sqrtn) return id1[x]; else return id2[n / x]; }int solve(){for (int64 i = 1, j; i <= n; i = j + 1){int64 t = n / i;j = n / t;if (t <= sqrtn) id1[t] = ++idt;else id2[n / t] = ++idt;num[idt] = t;g[idt] = work1::query(t);}for (int j = pt; j; --j){for (int k = 1; num[k] >= 1LL * p[j] * p[j]; ++k){int i = 1;for (int64 m = p[j]; m * p[j] <= num[k]; ++i, m *= p[j]){g[k] = inc(g[k], 1LL * dec(g[id(num[k] / m)], sumf[j]) * (p[j] ^ i) % mod);g[k] = inc(g[k], p[j] ^ (i + 1));}}}return inc(g[id(n)], 1);} }int main() {cin >> n;sqrtn = sqrt(n);for (int i = 2; i <= sqrtn; ++i){if (!fg[i]){p[++pt] = i;}for (int j = 1; j <= pt && p[j] * i <= sqrtn; ++j){fg[p[j] * i] = 1;if (i % p[j] == 0) break;}}for (int i = 1; i <= pt; ++i) sump[i] = inc(sump[i - 1], p[i]), sumf[i] = inc(sumf[i - 1], p[i] ^ 1);work1::solve();//cerr << work1::query(n) << endl;cout << work2::solve() << endl; }
转载于:https://www.cnblogs.com/AnzheWang/p/10453740.html
[LOJ#6053]简单的函数 题解相关推荐
- loj #6053 简单的函数 min_25筛
\(\color{#0066ff}{ 题目描述 }\) 某一天,你发现了一个神奇的函数\(f(x)\),它满足很多神奇的性质: \(f(1)=1\) \(f(p^c)=p \oplus c\) (\( ...
- LOJ.6053.简单的函数(Min_25筛)
题目链接 Min_25筛见这里: https://www.cnblogs.com/cjyyb/p/9185093.html https://www.cnblogs.com/zhoushuyu/p/91 ...
- LOJ #6053. 简单的函数
Description Solution \(Min25\) 筛. 要求出 \((1+p_1⊕c_1)*(1+p_2⊕c_2)*....*(1+p_m⊕c_m)\) . 我们可以枚举最小质因子 \(p ...
- Min_25筛(LibreOJ #6053: 简单的函数)
一个简单的问题:求 (i为质数) 设小于的质数有t个,其中表示第i个质数 再设 (i为质数或者i的最小质因子不小于) 那么有 其中 , 就是答案 因为每次S(x, y)都是 ...
- LOJ6053简单的函数(min_25筛)
LOJ6053简单的函数 https://loj.ac/p/6053 min_25筛模板题,但是要注意质数点有2比较特殊,需要在y==0的时候特判质数包含2的情况. #include<bits/ ...
- R语言笔记6:在R中写一些简单的函数、functions基础和作用域
R语言基础系列: 1数据类型(向量.数组.矩阵. 列表和数据框) 2读写数据所需的主要函数.与外部环境交互 3数据筛选--提取对象的子集 4向量.矩阵的数学运算 5控制结构 Your first R ...
- 开源纯C日志函数库iLOG3快速入门(八、如果你喜欢简单日志函数甚于日志函数库)...
2019独角兽企业重金招聘Python工程师标准>>> 开源纯C日志函数库iLOG3快速入门(八.如果你喜欢简单日志函数甚于日志函数库) 很多网友来信坚持表达了在项目中应使用简单日志 ...
- 初学__Python——Python 最简单的函数—用 lambda 声明函数
用 lambda 表达式来声明函数,是Python中一类比较特殊的声明函数的方式,lambda 来源于 LISP 语言,使用 lambda 可以声明一个匿名函数.所谓匿名函数是指所声明的函数没有函数名 ...
- vue函数如何调用其他函数?_编程|如何简单理解函数的传参、返回、调用
1 函数内部变量的局部性 在一个函数中定义的变量(包括实参),其作用域仅限于定义它的函数中,在其它的函数不能使用,这种变量称为"局部变量". 局部变量的作用域:函数内部声明和定义的 ...
最新文章
- php代码生成txt文件并下载
- svg配合css3动画_带有Adobe Illustrator,HTML和CSS的任何网站的SVG动画
- 爬虫-06-通用爬虫与聚焦爬虫
- 如何在 ES5 环境下实现一个const ?
- python3+tkinter实现的黑白棋,代码完整 100%能运行
- 关于MongoDB内存占用不断上升,导致OOM问题
- 37.JavaScript对象与JSON格式的转换,JSON.stringify、JSON.parse方法的使用方法和注意事项
- zabbix3.2短信告警脚本
- RHEL 6和RHEL 7管理服务的区别
- 优秀的网站加速插件 – WP rocket详细设置教程
- 电驴找不到服务器,电驴怎么连接服务器?电驴连接不上服务器的解决方法介绍...
- Druid配置——Ingestion Spec(摄取规范)
- 马上6等待服务器响应,解决网页响应慢,等待时间过长,waiting(TTFB)时间过长...
- GL(m)的拓扑结构,泡利矩阵暂记
- 系统监控——prometheus(普罗米修斯)的部署
- 好的APP用户体验需要满足这5点要求,你做到了吗?
- 音频交流项目测试(测试用例与总结)
- c/c++测试函数的运行时间(八种方法)(转)
- 用java玩的游戏平台_分享4个边玩边学Python的编程游戏网站
- ./configure 报错