「luogu2350」[HAOI2012] 外星人
时间:2019-10-25
本文章向大家介绍「luogu2350」[HAOI2012] 外星人,主要包括「luogu2350」[HAOI2012] 外星人使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
「luogu2350」[HAOI2012] 外星人
\(Description\):
以质数次幂的形式给出一个整数 \(N \ ( N = \prod p_i ^ {c_i} , p_i \leq 10 ^ 5 c_i \leq 10 ^ 9)\),求进行几次 \(N = \varphi(N)\) 后可以变成 \(1\)。
\(Solution\):
\[ \varphi(N) = N \prod \frac{p_i - 1}{p_i} \\ \tag{Euler Function} \]
观察上式得出 \(N\) 会少一个因子 \(p_i\) ,同时多出 \(p_i - 1\) 的因子;
注意到对于质因子 \(p \ (p > 2)\),一定有\(2 | p - 1\),所以必然多出一个因子 \(2\),同时增加一些其他质因子;
故只需要计算整个过程中 \(2\) 的个数,线筛即可;
特判一开始是否有因子 \(2\),有的话答案要加 \(1\) (产生 \(2\) )。
\(Source\):
#include <cstdio>
#include <cstring>
#include <algorithm>
int in() {
int x = 0; char c = getchar(); bool f = 0;
while (c < '0' || c > '9')
f |= c == '-', c = getchar();
while (c >= '0' && c <= '9')
x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
return f ? -x : x;
}
template<typename T>inline void chk_min(T &_, T __) { _ = _ < __ ? _ : __; }
template<typename T>inline void chk_max(T &_, T __) { _ = _ > __ ? _ : __; }
const int N = 1e5 + 5;
int n;
int pri[N], f[N], min_pri[N];
void prep() {
for (int i = 2; i < N; ++i) {
if (!min_pri[i]) {
min_pri[i] = i;
pri[++pri[0]] = i;
}
for (int j = 1, tmp; j <= pri[0] && i * pri[j] < N; ++j) {
tmp = i * pri[j];
min_pri[tmp] = pri[j];
if (!(i % pri[j]))
break;
}
}
f[2] = 1;
for (int i = 3; i < N; ++i)
if (min_pri[i] == i)
f[i] = f[i - 1];
else
f[i] = f[i / min_pri[i]] + f[min_pri[i]];
}
int main() {
//freopen("in", "r", stdin);
prep();
int T = in();
while (T--) {
unsigned long long res = 0;
n = in();
for (int i = 1, x; i <= n; ++i) {
x = in();
if (x == 2)
--res;
res += 1ull * f[x] * in();
}
printf("%llu\n", res + 1);
}
return 0;
}
原文地址:https://www.cnblogs.com/15owzLy1-yiylcy/p/11737518.html
- go语言base64加密解密的方法
- Oracle 12c数据库优化器统计信息收集的最佳实践(一)
- Go语言轻量级线程Goroutine用法实例
- 仿异次元百度分享工具条张戈修改版
- Go语言的队列和堆栈实现方法
- 妹子你真萌:一次心惊肉跳的服务器误删文件的恢复过程
- Go语言使用sort包对任意类型元素的集合进行排序的方法
- Oracle 12c ASM专题|Flex Diskgroup相关概念
- 移动搜索SEO分享:利用Meta声明来做百度开放适配
- 百度分享无法抓取图片及摘要的折中解决办法
- Golang 持久化
- Golang context 包入门
- 动手实现一个JSON验证器(上)
- Go语言实现冒泡和快速排序
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- shadertoy绘图
- 单基因生信分析流程(6)单基因相似性分析
- 三阴性乳腺癌提取和分析
- 一日一技:更友好的格式化数据提取方案
- 『深度应用』YoloV5 RTX2080Ti TensorRT与PyTorch速度对比
- 0797-使用HDP或CDP的Atlas采集CDH6的元数据和血缘
- 现代通信理论与新技术 PPT笔记整理
- 找找规律——LeetCode题目6:Z字形变换
- 给你点信心——LeetCode题目7:整数反转
- Python -二叉树 创建与遍历算法(很详细,转自国外教程)
- APP流量来源追踪方式——Android篇
- 从浏览器输入网址回车到看到页面过程到底经历了什么?
- Flutter Bloc 官方文档(BlocBuilder翻译)
- OpenGL ES 3.0 | 统一变量和属性的概念与(在程序中的)获取流程、统一变量缓冲区对象详解、std140块规范、用 命名统一变量块 建立 统一变量缓冲区对象 的流程 和 相关API 和...
- 深入浅出SVM(PART III)