IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【luogu P5495】Dirichlet 前缀和 -> 正文阅读

[C++知识库]【luogu P5495】Dirichlet 前缀和

链接

luogu P5495

题目描述

给出数列a,求数列b的和,bi的值=a[所有i的约数]的和

思路

求出质数数列p,显然有 a i = ∑ a i / p a_i = \sum{a_{i/p}} ai?=ai/p?
因为有 b i = ∑ a i / d b_i = \sum{a_{i/d}} bi?=ai/d?
d d d可以通过质因数分解
一层层向上递增就好了
其实就是一个前缀和

代码

#include<algorithm> 
#include<iostream>
#include<cstring>
#include<cstdio>
#define uint unsigned int

using namespace std;

uint n, q, k, ans, t;
bool b[20000005];
int p[20000005];
uint a[20000005];
uint seed;

inline uint getnext(){
	seed ^= seed<<13;
	seed ^= seed>>17;
	seed ^= seed<<5;
	return seed;
}//题目所需要的随机求a数列

uint read() 
{
	int x = 0, flag = 1; char ch = getchar();
	while (ch < '0' || ch > '9') {if (ch == '-') flag = -1; ch = getchar();}
	while (ch >= '0' && ch <= '9'){x = x * 10 + ch - '0'; ch = getchar();}
	return x * flag;
}

void write(uint x)
{
    if (x < 0) { 
		x = -x; 
		putchar('-');
	}
	if (x > 9) write(x / 10);
	putchar(x % 10 + 48);
	return;
}

int main()
{
	scanf("%llu%llu", &n, &seed);
	for(int i = 2; i <= n; ++i)
	{
		if(!b[i]) {
			b[i] = 1;
			p[++t] = i;
		} 
		for(int j = 1; j <= t && i * p[j] <= n; ++j)
			b[i * p[j]] = 1;
	}
	for(int i = 1; i <= n; ++i)
		a[i] = getnext();
	for(int i = 1; i <= t; ++i)
	for(int j = 1; p[i] * j <= n; ++j)
		a[p[i] * j] += a[j];
	ans = a[1];
	for(int i = 2; i <= n; ++i)
		ans ^= a[i];
	printf("%llu", ans);
	return 0;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:10:05  更:2022-02-28 15:12:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:49:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码