牛客小白月赛12 C 华华给月月出题 (积性函数,线性筛)
链接:https://ac.nowcoder.com/acm/contest/392/C
来源:牛客网
华华给月月出题
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
华华刚刚帮月月完成了作业。为了展示自己的学习水平之高超,华华还给月月出了一道类似的题:
Ans=\oplus_{i=1}^N(i^N\mod(10^9+7))Ans=⊕
i=1
N
(i
N
mod(10
9
+7))
\oplus⊕符号表示异或和,详见样例解释。
虽然月月写了个程序暴力的算出了答案,但是为了确保自己的答案没有错,希望你写个程序帮她验证一下。
输入描述:
输入一个正整数N。
输出描述:
输出答案Ans。
示例1
输入
复制
3
输出
复制
18
说明
N=3时,1^3=11
3
=1,2^3=82
3
=8,3^3=273
3
=27,异或和为18。
示例2
输入
复制
2005117
输出
复制
863466972
备注:
1\le N\le 1.3\times10^71≤N≤1.3×10
7
思路:
令 f(x)= x^N
则 f(a * b)=(a+b)^N=a^N * b^N=f(a) * f(b)
所以f(x)是一个完全积性函数,
所以可以用线筛来做,
对于素数,直接快速幂。因为素数的个数是O(n/log(n))级别的,快速幂的复杂度是O(log N) 的,所以总时间复杂度是O(N)。
细节见代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <vector>
#include <iomanip>
#define ALL(x) (x).begin(), (x).end()
#define sz(a) int(a.size())
#define all(a) a.begin(), a.end()
#define rep(i,x,n) for(int i=x;i<n;i++)
#define repd(i,x,n) for(int i=x;i<=n;i++)
#define pii pair<int,int>
#define pll pair<long long ,long long>
#define gbtb ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define MS0(X) memset((X), 0, sizeof((X)))
#define MSC0(X) memset((X), '\0', sizeof((X)))
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define eps 1e-6
#define gg(x) getInt(&x)
#define chu(x) cout<<"["<<#x<<" "<<(x)<<"]"<<endl
using namespace std;
typedef long long ll;
ll gcd(ll a, ll b) {return b ? gcd(b, a % b) : a;}
ll lcm(ll a, ll b) {return a / gcd(a, b) * b;}
ll powmod(ll a, ll b, ll MOD) {ll ans = 1; while (b) {if (b % 2)ans = ans * a % MOD; a = a * a % MOD; b /= 2;} return ans;}
inline void getInt(int* p);
const int maxn = 13000010;
const int inf = 0x3f3f3f3f;
/*** TEMPLATE CODE * * STARTS HERE ***/ll f[maxn];
ll n;
std::vector<ll> prime;
const ll mod = 1e9 + 7;
void init()
{memset(f, -1, sizeof(f));f[1] = 1ll;for (int i = 2; i < maxn; ++i){if (f[i] == -1){f[i] = powmod(1ll * i, n, mod);prime.push_back(i);}for (int j = 0; j < sz(prime) && prime[j]*i < maxn; ++j){f[prime[j]*i] = f[i] * f[prime[j]] % mod;if (i % prime[j] == 0){break;}}}
}int main()
{//freopen("D:\\common_text\\code_stream\\in.txt","r",stdin);//freopen("D:\\common_text\\code_stream\\out.txt","w",stdout);cin >> n;init();ll ans = 0ll;repd(i, 1, n){ans ^= f[i];}cout << ans << endl;return 0;
}inline void getInt(int* p) {char ch;do {ch = getchar();} while (ch == ' ' || ch == '\n');if (ch == '-') {*p = -(getchar() - '0');while ((ch = getchar()) >= '0' && ch <= '9') {*p = *p * 10 - ch + '0';}}else {*p = ch - '0';while ((ch = getchar()) >= '0' && ch <= '9') {*p = *p * 10 + ch - '0';}}
}
转载于:https://www.cnblogs.com/qieqiemin/p/11420892.html
牛客小白月赛12 C 华华给月月出题 (积性函数,线性筛)相关推荐
- 华华给月月出题——牛客小白月赛12
碰到个积性函数好题. 华华给月月出题:https://ac.nowcoder.com/acm/problem/23047 题目描述 华华刚刚帮月月完成了作业.为了展示自己的学习水平之高超,华华还给月月 ...
- 牛客小白月赛12 H 华华和月月种树 (离线dfs序+线段树)
链接:https://ac.nowcoder.com/acm/contest/392/H 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K,其他语言2621 ...
- 牛客小白月赛12 D 月月给华华出题 (欧拉函数,数论,线筛)
链接:https://ac.nowcoder.com/acm/contest/392/D 来源:牛客网 月月给华华出题 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K, ...
- 牛客小白月赛12 F 华华开始学信息学 (分块+树状数组)
链接:https://ac.nowcoder.com/acm/contest/392/F 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 牛客小白月赛12 I 华华和月月逛公园 (tarjian 求桥)
链接:https://ac.nowcoder.com/acm/contest/392/I 来源:牛客网 华华和月月逛公园 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K, ...
- 牛客小白月赛12 J 月月查华华的手机 (序列自动机模板题)
链接:https://ac.nowcoder.com/acm/contest/392/J 来源:牛客网 题目描述 月月和华华一起去吃饭了.期间华华有事出去了一会儿,没有带手机.月月出于人类最单纯的好奇 ...
- 牛客小白月赛12:月月给华华出题(欧拉函数)
月月给华华出题 思路 ∑i=1nigcd(i,n)\sum_{i = 1} ^{n} \frac{i}{gcd(i, n)}i=1∑ngcd(i,n)i =∑d∣n∑i=1nid(gcd(i,d) ...
- 牛客小白月赛12 B.华华教月月做数学(Java)
华华教月月做数学 题目链接:https://ac.nowcoder.com/acm/contest/392/B 题目描述 找到了心仪的小姐姐月月后,华华很高兴的和她聊着天.然而月月的作业很多,不能继续 ...
- 牛客小白月赛7 I.新建 Microsoft Office Word 文档
牛客小白月赛7 I.新建 Microsoft Office Word 文档 题目链接 题目描述 CSL正在学习<计算机办公自动化>文件的建立与删除. CSL发现,当他新建一个word文档时 ...
最新文章
- 与HTTP关系密切的协议:IP、TCP、DNS
- VS2012经常使用的快捷方式完成最全面
- IPv6 — Multi-homing(多宿主/多链路/多归属)
- 递归神经网络部分组件(七)
- android 多参数,玩转Android monkey之多参数实战
- centos6 进入命令行_CentOS 6.x误删libc.so.6,紧急恢复
- 论文浅尝 | 通过阅读实体描述进行零样本的实体链接
- 1s完成 大文件分割方案
- 优化后亲测可用!免费下载QQ音乐大部分资源
- apa引用要在文中吗_英文论文格式要求玩转APA
- 域名注册处更改dns服务器,怎么修改DNS服务器_为什么要修改DNS服务器
- 怎么解决电脑任务管理器被系统管理员停用?
- uniapp仿网易云音乐项目(发布小程序、H5和安卓App)
- SQL中rand和order by rand()用法
- 基于沉积学教材的自顶向下的概念抽取(以沉积相为例为例)
- MongoDB学习笔记(基础操作篇)
- 基于jeecgboot的支持flowable的排它网关之后的会签功能(二)
- 两个博士读完,学术能力翻一倍?Nature专访三位「双料博士」
- SAP TRM 中的詹森阿尔法指数(Jensen's alpha)计算
- 六大原则之“里氏替代原则(LSP)“笔记
热门文章
- SAP ABAP实用技巧介绍系列之锁住某个特定的工作进程
- SAP ABAP实用技巧介绍系列之已知某个signature查找定义的方法
- wex5 php开发,WeX5平台PHP开发 使用说明文档
- java applet 游戏_Java Applet实现五子棋游戏
- always on sql 收缩日志_使用alwayson后如何收缩数据库日志的方法详解
- 在python中value是啥意思_【Python】python,字典中如何根据value值取对应的key值
- 配置中文_《洛克人Zero/ZX遗产合集》PC配置公布 支持中文
- iis php 0x80070032,访问网站时 HTTP 错误 404.17 - Internet Information Services | Microsoft Docs...
- python 给word添加背景图片_Python如何使用word文档插入图片和表格
- u9系统的使用方法仓库_新风系统如何使用 新风系统使用方法介绍【图文】