最近在搞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]简单的函数 题解相关推荐

  1. loj #6053 简单的函数 min_25筛

    \(\color{#0066ff}{ 题目描述 }\) 某一天,你发现了一个神奇的函数\(f(x)\),它满足很多神奇的性质: \(f(1)=1\) \(f(p^c)=p \oplus c\) (\( ...

  2. LOJ.6053.简单的函数(Min_25筛)

    题目链接 Min_25筛见这里: https://www.cnblogs.com/cjyyb/p/9185093.html https://www.cnblogs.com/zhoushuyu/p/91 ...

  3. LOJ #6053. 简单的函数

    Description Solution \(Min25\) 筛. 要求出 \((1+p_1⊕c_1)*(1+p_2⊕c_2)*....*(1+p_m⊕c_m)\) . 我们可以枚举最小质因子 \(p ...

  4. Min_25筛(LibreOJ #6053: 简单的函数)

    一个简单的问题:求 (i为质数) 设小于的质数有t个,其中表示第i个质数 再设  (i为质数或者i的最小质因子不小于) 那么有             其中 ,  就是答案 因为每次S(x, y)都是 ...

  5. LOJ6053简单的函数(min_25筛)

    LOJ6053简单的函数 https://loj.ac/p/6053 min_25筛模板题,但是要注意质数点有2比较特殊,需要在y==0的时候特判质数包含2的情况. #include<bits/ ...

  6. R语言笔记6:在R中写一些简单的函数、functions基础和作用域

    R语言基础系列: 1数据类型(向量.数组.矩阵. 列表和数据框) 2读写数据所需的主要函数.与外部环境交互 3数据筛选--提取对象的子集 4向量.矩阵的数学运算 5控制结构 Your first R ...

  7. 开源纯C日志函数库iLOG3快速入门(八、如果你喜欢简单日志函数甚于日志函数库)...

    2019独角兽企业重金招聘Python工程师标准>>> 开源纯C日志函数库iLOG3快速入门(八.如果你喜欢简单日志函数甚于日志函数库) 很多网友来信坚持表达了在项目中应使用简单日志 ...

  8. 初学__Python——Python 最简单的函数—用 lambda 声明函数

    用 lambda 表达式来声明函数,是Python中一类比较特殊的声明函数的方式,lambda 来源于 LISP 语言,使用 lambda 可以声明一个匿名函数.所谓匿名函数是指所声明的函数没有函数名 ...

  9. vue函数如何调用其他函数?_编程|如何简单理解函数的传参、返回、调用

    1 函数内部变量的局部性 在一个函数中定义的变量(包括实参),其作用域仅限于定义它的函数中,在其它的函数不能使用,这种变量称为"局部变量". 局部变量的作用域:函数内部声明和定义的 ...

最新文章

  1. php代码生成txt文件并下载
  2. svg配合css3动画_带有Adobe Illustrator,HTML和CSS的任何网站的SVG动画
  3. 爬虫-06-通用爬虫与聚焦爬虫
  4. 如何在 ES5 环境下实现一个const ?
  5. python3+tkinter实现的黑白棋,代码完整 100%能运行
  6. 关于MongoDB内存占用不断上升,导致OOM问题
  7. 37.JavaScript对象与JSON格式的转换,JSON.stringify、JSON.parse方法的使用方法和注意事项
  8. zabbix3.2短信告警脚本
  9. RHEL 6和RHEL 7管理服务的区别
  10. 优秀的网站加速插件 – WP rocket详细设置教程
  11. 电驴找不到服务器,电驴怎么连接服务器?电驴连接不上服务器的解决方法介绍...
  12. Druid配置——Ingestion Spec(摄取规范)
  13. 马上6等待服务器响应,解决网页响应慢,等待时间过长,waiting(TTFB)时间过长...
  14. GL(m)的拓扑结构,泡利矩阵暂记
  15. 系统监控——prometheus(普罗米修斯)的部署
  16. 好的APP用户体验需要满足这5点要求,你做到了吗?
  17. 音频交流项目测试(测试用例与总结)
  18. c/c++测试函数的运行时间(八种方法)(转)
  19. 用java玩的游戏平台_分享4个边玩边学Python的编程游戏网站
  20. ./configure 报错

热门文章

  1. SSM整理笔记1——SSM网站初步功能设计
  2. resin4 发布war包
  3. Ubuntu10.04中间Leach协议一键安装
  4. 学习Linux——计算机概论
  5. Flutter MouseRegion 链接高亮显示样式 只有你想不到 没有你做不到的
  6. Mr.J--树的遍历方式详解
  7. Ta Muid(Dreams 梦幻)
  8. Title:eNSP 映射到外网
  9. [示例] 使用 TStopwatch 计时
  10. jxl和POI的区别