Bzoj 2749: [HAOI2012]外星人 欧拉函数,数论,线性筛
2749: [HAOI2012]外星人
Time Limit: 3 Sec Memory Limit: 128 MB
Submit: 568 Solved: 302
[Submit][Status][Discuss]
Description
Input
Output
输出test行,每行一个整数,表示答案。
Sample Input
2
2 2
3 1
Sample Output
HINT
Test<=50 Pi<=10^5,1<=Q1<=10^9
Source
很好的一道题。
就是要求能phi出多少个2。。。
奇数时要加一(就是刚开始的时候变成偶数时要用一次。)
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define MAXN 100000 4 #define LL long long 5 int prime[10010],phi[MAXN+10],tot,f[MAXN+10]; 6 bool vis[MAXN+10]; 7 int read() 8 { 9 int s=0,fh=1;char ch=getchar(); 10 while(ch<'0'||ch>'9'){if(ch=='-')fh=-1;ch=getchar();} 11 while(ch>='0'&&ch<='9'){s=s*10+(ch-'0');ch=getchar();} 12 return s*fh; 13 } 14 void getEular() 15 { 16 int i,j; 17 phi[1]=1;tot=0; 18 for(i=2;i<=MAXN;i++) 19 { 20 if(vis[i]==false) 21 { 22 prime[++tot]=i; 23 phi[i]=i-1; 24 } 25 for(j=1;j<=tot&&prime[j]*i<=MAXN;j++) 26 { 27 vis[prime[j]*i]=true; 28 if(i%prime[j]==0) 29 { 30 phi[prime[j]*i]=prime[j]*phi[i]; 31 break; 32 } 33 phi[prime[j]*i]=phi[prime[j]]*phi[i]; 34 } 35 } 36 } 37 int main() 38 { 39 freopen("alien.in","r",stdin); 40 freopen("alien.out","w",stdout); 41 int T,i,m,p,q,n; 42 bool flag; 43 LL ans; 44 T=read(); 45 getEular(); 46 memset(f,0,sizeof(f));//f[i]代表i需要phi多少次才能化为1.(也就是等于能phi多少个2.) 47 f[1]=-1; 48 for(i=2;i<=MAXN;i++)f[i]=f[phi[i]]+1; 49 f[1]++;f[2]++; 50 while(T--) 51 { 52 m=read();ans=0; 53 flag=false;//判断奇数时要加一. 54 for(i=1;i<=m;i++) 55 { 56 p=read();q=read(); 57 if(p==2)flag=true; 58 ans+=(LL)f[p]*q; 59 } 60 if(flag==false)ans++; 61 printf("%lld\n",ans); 62 } 63 fclose(stdin); 64 fclose(stdout); 65 return 0; 66 }
View Code
转载于:https://www.cnblogs.com/Var123/p/5296757.html
Bzoj 2749: [HAOI2012]外星人 欧拉函数,数论,线性筛相关推荐
- 【数学知识】三种方法求 [1,n] 中所有数欧拉函数(线性筛欧拉函数优化至 O(n) )
整理的算法模板合集: ACM模板 ①直接求小于或等于n,且与n互质的数个数(求[1,n]中所有数的欧拉函数时间复杂度:O(nn)O(n\sqrt{n})O(nn)) ②求[1,n]之间每个数的质因数 ...
- 【模板题】欧拉函数与线性筛求欧拉函数
欧拉函数是什么? 定义:对于正整数nnn,欧拉函数是小于或等于nnn的正整数中与nnn互质的数的个数,记作φ(n)\varphi (n)φ(n). φ(1)=1\varphi (1)=1φ(1)=1. ...
- jzoj1164-求和【欧拉函数,数论】(筛欧拉函数模板)
正题 大意 给出一个nnn,求1∼n" role="presentation" style="position: relative;">1∼n1 ...
- 素数筛法(传统普通、朴素筛法、埃式筛法、欧拉筛法(线性筛))
素数筛法(普通.朴素筛法.埃式筛法.欧拉筛法) 1.题目 2.分析 3.代码 传统普通 朴素筛法 朴素筛法(6.14) 埃式筛法 埃式筛法(6.14) 欧拉筛法(线性筛) 欧拉筛法(线性筛 6.14) ...
- P2158,jzoj1709-仪仗队【欧拉函数,数论】
正题 评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P2158 大意 有n∗nn∗nn*n个点,求从(1,1)(1,1)(1 ...
- Euler:欧拉函数&素数筛
一.欧拉函数 欧拉函数是小于x的整数中与x互质的数的个数,一般用φ(x)表示. 通式: 其中p1, p2--pn为x的所有质因数,x是不为0的整数. 比如x=12,拆成质因数为12=2*2*3, ...
- AcWing 874. 筛法求欧拉函数(线性筛法求欧拉函数模板)
给定一个正整数 n,求 1∼n 中每个数的欧拉函数之和. 输入格式 共一行,包含一个整数 n. 输出格式 共一行,包含一个整数,表示 1∼n 中每个数的欧拉函数之和. 数据范围 1≤n≤10^6 输入 ...
- 欧拉筛法(线性筛)的学习理解
前言 在刚接触编程语言时,对于寻找素数,第一时间想到的便是二重循环暴力查找,其复杂度O(n^2),通过循环中只判断到根号n可以优化一些,不过复杂度也达不到预期.在数论的学习中,我学到了埃氏筛法,O(n ...
- BZOJ 2190: [SDOI2008]仪仗队( 欧拉函数 )
假设C君为(0, 0), 则右上方为(n - 1, n - 1). 一个点(x, y) 能被看到的前提是gcd(x, y) = 1, 所以 answer = ∑ phi(i) * 2 + 2 - 1 ...
最新文章
- 感受hook里useEffect的执行顺序,hook倒计时
- QQ窗口的控制,同步异步打开360网盘,控制360网盘窗口的移动
- 充满想象力的 JavaScript 物理和重力实验
- Linux环境变量的设置和查看
- 牛客网--2019校招--丰收
- python—range() 函数—步长为正,左闭右开;步长为负,左开右闭
- 毕业论文自动去重软件,内附软件
- ios 录音,播放 tips
- ZOJ:1003 Crashing Balloon(DFS)
- 计算机模拟CS,CS跳跃模拟器电脑版_CS跳跃模拟器手游电脑版_游戏堡
- DirextX7。0 SDK 在VC 6.0 环境中使用的注意事项
- 移动前端手机输入法自带emoji表情字符处理
- spring之aop(前置通知,后置通知,环绕通知,过滤通知,异常通知)
- Linux 中CPU占用过高问题
- 准备好收集 BreederDAO 徽章了吗?
- Java 中的 getResource 方法
- PyTorch 简介
- Shader学习23——描边+辉光
- Windows Server 2022 发布(正式版下载)
- 异地工作比例高 最受IT人欢迎的十大工作城市
热门文章
- C++实现直接插入排序
- Android 自定义Adapter以实现自定义填充ListView的Item
- Pytorch自定义Dataset和DataLoader去除不存在和空的数据
- Java并发编程—线程间协作方式wait()、notify()、notifyAll()和Condition
- Java数据结构—基本数据类型
- 快速排序以及基于快排思想的找前k个最大数
- Servlet的学习(四)
- 数据处理程序的一点经验
- [RN] React Native 实现 类似京东 的 沉浸式状态栏和搜索栏
- P2370 yyy2015c01的U盘(二分+背包)