bzoj 2749 - 外星人
Description
给定一个数的标准分解\(N= \prod_{i=1}^n p_i^{q_i}\)
其中\(p_i \le 10^5, q_i \le 10^9\)
求最小的\(x\)使得\(\varphi^x(N) = 1\) 即求这个数进行多少次\(\varphi\)后得到1
Analysis
\(\varphi\)的性质还是经常与2有关的
比若说任意\(\varphi\)两次就一定会除掉一个因子2
所以\(\varphi\)的次数为\(O(\log)\)
此题就是利用类似这样的性质
\(\varphi\)的次数为只与过程中\(2\)的总数有关
(1) 如果存在\(2\), 每次只能恰好消掉一个
(2) 对于一个奇质数因子, \(\varphi\)以下会产生至少一个\(2\), 以及若干个新的奇质数
(3) 只要奇质数还存在, 该回合内就会产生至少一个2
(4) 消完\(2\)需要的次数\(=\)因此\(2\)产生的次数 \(\ge\) 进行的回合数
(5) 最后会剩下\(2^q\), 恰好\(q\)步消完
于是我们之用求出产生2的次数即可,设为 \(f(n)\)
\(f(2)=1\)
\(f(奇质数) = f(奇质数-1)\)
\(f(pq) = f(p) + f(q)\)
特别的当\(N\)不含2因子时, 需要一步来产生2, 然后2才开始不断的消, 所以答案+1
Code
#include <cstdio>
#include <cstring>
#include <cctype>
#include <cmath>
#include <cctype>
#include <cmath>
#define rep(i,a,b) for (int i = (a); i <= (b); ++i)
using namespace std;
const int M = 1e5 + 7;
typedef long long LL;
inline int ri(){
	int x = 0; bool f = 1; char c = getchar();
	for (; !isdigit(c); c = getchar()) if (c == '-') f = 0;
	for (; isdigit(c); c = getchar()) x = x*10+c-48;
	return f ? x : -x;
}
int tcas, n;
int prime[M], cnt;
bool notprime[M];
int f[M];
void init(){
	notprime[1] = 1;
	for (int i=2; i<M; ++i){
		if (!notprime[i]) {
			prime[++cnt] = i;
			if (i == 2) f[i] = 1;
			else f[i] = f[i-1];
		}
		for (int j=1; j<=cnt; ++j){
			if (1LL * prime[j] * i >= M) break;
			int t = prime[j] * i;
			notprime[t] = 1;
			f[t] = f[i] + f[prime[j]];
			if (i % prime[j] == 0) break;
		}
	}
}
int main(){
	tcas = ri();
	init();
	while (tcas--){
		n = ri();
		LL ans = 0, havtwo = 0;
		rep (i, 1, n){
			int x = ri(), y = ri();
			ans += 1LL * f[x] * y;
			havtwo |= (x == 2);
		}
		if (!havtwo) ans++;
		printf("%lld\n", ans);
	}
	return 0;
}
												
											bzoj 2749 - 外星人的更多相关文章
- Bzoj 2749: [HAOI2012]外星人  欧拉函数,数论,线性筛
		
2749: [HAOI2012]外星人 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 568 Solved: 302[Submit][Status][ ...
 - 【BZOJ 2749】 2749: [HAOI2012]外星人 (数论-线性筛?类积性函数)
		
2749: [HAOI2012]外星人 Description Input Output 输出test行,每行一个整数,表示答案. Sample Input 1 2 2 2 3 1 Sample Ou ...
 - BZOJ 2749 HAOI 2012 外星人 数论 欧拉函数
		
题意: 给出一个数,给出的形式是其分解质因数后,对应的质因数pi及其次数qi,问对这个数不停求phi,直至这个数变成1,需要多少次.(多组数据) 范围:pi <= 1e5,qi <= 1e ...
 - 外星人(bzoj 2749)
		
Description Input Output 输出test行,每行一个整数,表示答案. Sample Input 1 2 2 2 3 1 Sample Output 3 HINT Test< ...
 - BZOJ 2749 [HAOI2012]外星人
		
题解:对每一个>2的质数分解,最后统计2的个数 注意:如果一开始没有2则ans需+1,因为第一次求phi的时候并没有消耗2 WA了好几遍 #include<iostream> #in ...
 - bzoj 2749 杂题
		
我们可以发现,phi(x)与x相比,相当于x的每个质因子-1后再分解质因数,添加到现有的质因子中,比如质因子13相当于将13变成12,然后分解成2*2*3,再将2的质数+2,3的指数+1,除了质因子2 ...
 - 【bzoj2749】[HAOI2012]外星人
		
2749: [HAOI2012]外星人 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 677 Solved: 360[Submit][Status][ ...
 - 2749: [HAOI2012]外星人
		
首先像我一样把柿子画出来或者看下hint 你就会发现其实是多了个p-1这样的东东 然后除非是2他们都是偶数,而2就直接到0了 算一下2出现的次数就好 #include<cstdio> #i ...
 - BZOJ2749: [HAOI2012]外星人
		
2749: [HAOI2012]外星人 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 377 Solved: 199[Submit][Status] ...
 
随机推荐
- 文件系统inodes使用率过高问题处理
			
运维过程中经常碰见文件系统inodes使用率过高导致文件系统不可写的问题,常见场景如下 .Oracle产生的审计文件,特别是DG备库或者审计设置为OS时 .crontab产生大量邮件,导致/var/s ...
 - react属性校验
			
https://reactjs.org/docs/typechecking-with-proptypes.html 1.安装:cnpm i prop-types -S import PropTypes ...
 - nodejs fs路径
			
引用:https://www.cnblogs.com/guangzhou11/p/7705257.html require()别的js文件的时候,将执行那个js文件. 注意: require()中的路 ...
 - webpack4.x ,1基本项目构建 详解
			
1.先创建个文件夹 比如叫 webApp 用编译器打开 2.安装全局的webpack 和webpack-cli 及 webpack-dev-server 命令如下 npm install webpac ...
 - Dtree 添加 checkbox 复选框  可以默认选中
			
一:目标 要实现用一个树形结构的展示数据,每个节点(除了根节点)前有一个checkbox,同时,点击父节点,则子节点全选或者全不选,当选中了全部子节点,父节点选中:如下图所示: 同时可以在创建的时候, ...
 - 1072: [SCOI2007]排列perm
			
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3000 Solved: 1875[Submit][Status][Discuss] Descript ...
 - Mybatis  插入一条或批量插入  返回带有自增长主键记录
			
首先讲一下, 插入一条记录返回主键的 Mybatis 版本要求低点,而批量插入返回带主键的 需要升级到3.3.1版本,3.3.0之前的都不行, <dependency> <grou ...
 - Sublime Text配置python以及快捷键总结
			
1.打开Tools > Build System > New Build System.. 2.点击New Build System后,会生成一个空配置文件,在这个配置文件内覆盖配置信息, ...
 - windows下的命令
			
1.cd 现在默认只能在当前盘符中改变目录,如果要改变盘符则需要多加一个/d命令. cd /d d:/git/springTest 2.chdir 显示当前目录名或改变当前目录. CHDIR [/D] ...
 - Python 技巧(三)—— list 删除一个元素的三种做法
			
我们以一个字符串为元素类型的 list 为例,进行列表元素的删除: >>> l = ['no surfing', 'flippers'] 1 法一:remove(val) >& ...