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

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <cctype>
  4. #include <cmath>
  5. #include <cctype>
  6. #include <cmath>
  7. #define rep(i,a,b) for (int i = (a); i <= (b); ++i)
  8. using namespace std;
  9. const int M = 1e5 + 7;
  10. typedef long long LL;
  11. inline int ri(){
  12. int x = 0; bool f = 1; char c = getchar();
  13. for (; !isdigit(c); c = getchar()) if (c == '-') f = 0;
  14. for (; isdigit(c); c = getchar()) x = x*10+c-48;
  15. return f ? x : -x;
  16. }
  17. int tcas, n;
  18. int prime[M], cnt;
  19. bool notprime[M];
  20. int f[M];
  21. void init(){
  22. notprime[1] = 1;
  23. for (int i=2; i<M; ++i){
  24. if (!notprime[i]) {
  25. prime[++cnt] = i;
  26. if (i == 2) f[i] = 1;
  27. else f[i] = f[i-1];
  28. }
  29. for (int j=1; j<=cnt; ++j){
  30. if (1LL * prime[j] * i >= M) break;
  31. int t = prime[j] * i;
  32. notprime[t] = 1;
  33. f[t] = f[i] + f[prime[j]];
  34. if (i % prime[j] == 0) break;
  35. }
  36. }
  37. }
  38. int main(){
  39. tcas = ri();
  40. init();
  41. while (tcas--){
  42. n = ri();
  43. LL ans = 0, havtwo = 0;
  44. rep (i, 1, n){
  45. int x = ri(), y = ri();
  46. ans += 1LL * f[x] * y;
  47. havtwo |= (x == 2);
  48. }
  49. if (!havtwo) ans++;
  50. printf("%lld\n", ans);
  51. }
  52. return 0;
  53. }

bzoj 2749 - 外星人的更多相关文章

  1. Bzoj 2749: [HAOI2012]外星人 欧拉函数,数论,线性筛

    2749: [HAOI2012]外星人 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 568  Solved: 302[Submit][Status][ ...

  2. 【BZOJ 2749】 2749: [HAOI2012]外星人 (数论-线性筛?类积性函数)

    2749: [HAOI2012]外星人 Description Input Output 输出test行,每行一个整数,表示答案. Sample Input 1 2 2 2 3 1 Sample Ou ...

  3. BZOJ 2749 HAOI 2012 外星人 数论 欧拉函数

    题意: 给出一个数,给出的形式是其分解质因数后,对应的质因数pi及其次数qi,问对这个数不停求phi,直至这个数变成1,需要多少次.(多组数据) 范围:pi <= 1e5,qi <= 1e ...

  4. 外星人(bzoj 2749)

    Description Input Output 输出test行,每行一个整数,表示答案. Sample Input 1 2 2 2 3 1 Sample Output 3 HINT Test< ...

  5. BZOJ 2749 [HAOI2012]外星人

    题解:对每一个>2的质数分解,最后统计2的个数 注意:如果一开始没有2则ans需+1,因为第一次求phi的时候并没有消耗2 WA了好几遍 #include<iostream> #in ...

  6. bzoj 2749 杂题

    我们可以发现,phi(x)与x相比,相当于x的每个质因子-1后再分解质因数,添加到现有的质因子中,比如质因子13相当于将13变成12,然后分解成2*2*3,再将2的质数+2,3的指数+1,除了质因子2 ...

  7. 【bzoj2749】[HAOI2012]外星人

    2749: [HAOI2012]外星人 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 677  Solved: 360[Submit][Status][ ...

  8. 2749: [HAOI2012]外星人

    首先像我一样把柿子画出来或者看下hint 你就会发现其实是多了个p-1这样的东东 然后除非是2他们都是偶数,而2就直接到0了 算一下2出现的次数就好 #include<cstdio> #i ...

  9. BZOJ2749: [HAOI2012]外星人

    2749: [HAOI2012]外星人 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 377  Solved: 199[Submit][Status] ...

随机推荐

  1. C/C++程序基础 (三)引用和指针

    引用 引用变量与原始变量共享同一地址 int &a = b 则 &a = &b 引用类型的变量必须在声明时初始化,且不可以更换指向变量 常量的引用必须是常量引用,非常量的引用可 ...

  2. SpringBoot之YAML

    SpringBoot的配置文件有两种,一种是properties结尾的,一种是以yaml或yml文件结尾的 我们讨论一下yml文件结尾的文件: 基本语法: 其实yml文件就是键值对的形式,不过就是键( ...

  3. 第六篇:python中numpy.zeros(np.zeros)的使用方法

    用法:zeros(shape, dtype=float, order='C') 返回:返回来一个给定形状和类型的用0填充的数组: 参数:shape:形状 dtype:数据类型,可选参数,默认numpy ...

  4. 牛客练习赛42 A 字符串

    题目描述 给定两个等长的由小写字母构成的串 A,BA,B,其中 |A|=|B|=n|A|=|B|=n. 现在你需要求出一个子区间 [l,r][l,r] 使得 LCP(A[l,r],B[l,r])×LC ...

  5. 洛谷 P2205 [USACO13JAN]画栅栏

    这题其实没什么,但用到的算法都十分有用.做一个不恰当的比喻,这是一只必须用牛刀杀的鸡,但因为我这个蒟蒻杀不死牛,所以只能找只鸡来练练手. 题目描述 Farmer John 想出了一个给牛棚旁的长围墙涂 ...

  6. Linux命令之---cd

    命令简介 Linux cd 命令是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. 命令格式 cd [目录名] 命令功能 切换当前目录至dirName 常用范例 ...

  7. cogs:1619. [HEOI2012]采花/luogu P2056

    1619. [HEOI2012]采花 ★★☆   输入文件:1flower.in   输出文件:1flower.out   简单对比时间限制:5 s   内存限制:128 MB [题目描述] 萧薰儿是 ...

  8. leetcode 【 Best Time to Buy and Sell Stock II 】python 实现

    题目: Say you have an array for which the ith element is the price of a given stock on day i. Design a ...

  9. Python-S9-Day126——Scrapy爬虫框架

    01 今日内容概要 02 内容回顾和补充:scrapy 03 内容回顾和补充:网络和并发编程 04 Scrapy爬虫框架:pipeline做持久化(一) 05 Scrapy爬虫框架:pipeline做 ...

  10. Leetcode 517.超级洗衣机

    超级洗衣机 假设有 n 台超级洗衣机放在同一排上.开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的. 在每一步操作中,你可以选择任意 m (1 ≤ m ≤ n) 台洗衣机,与此同时将每台洗衣机 ...