题目:戳这里

题意:要求构成有n个点,m条边的无向图,满足每条边上的两点互质。

解题思路:

显然1~n这n个点能构成边的条数,就是2~n欧拉函数之和(x的欧拉函数值代表小于x且与x互质的数的个数。

因此m>n-1 && m <= sum成立则可以构成无向图。

接着求出1e5以内的欧拉函数,求和可以发现前1000项的欧拉值就已经远远大于1e5。

所以m条边直接两层循环暴力即可。

附本人代码:

 1 #include <bits/stdc++.h>
2 typedef long long ll;
3 const int maxn = 1e5+10;
4 const ll inf = 1e18;
5 const ll mod = 1e9+7;
6 using namespace std;
7 ll cnt[maxn];
8 ll euler[maxn];
9 void geteuler() {
10 memset(euler, 0, sizeof(euler));
11 euler[1] = 1;
12 for(ll i = 2; i < maxn; ++i) {
13 if(!euler[i]) {
14 for(ll j = i; j < maxn; j+=i) {
15 if(!euler[j]) euler[j] = j;
16 euler[j] = euler[j]/i * (i - 1ll);
17 }
18 }
19 }
20 }
21 ll gcd(ll a, ll b) {return b?gcd(b,a%b):a;}
22 int main(){
23 ll n, m;
24 ll sum = 0;
25 scanf("%lld %lld", &n, &m);
26 geteuler();
27 for(ll i = 2; i <= n; ++i) {
28 sum += euler[i];
29 }
30
31 // printf("%lld\n", sum);
32 if(sum < m || m < n - 1) {
33 puts("Impossible");
34 return 0;
35 }
36 puts("Possible");
37 for(ll i = 1; i <= n; ++i) {
38 for(ll j = i + 1; j <= n; ++j) {
39 if(gcd(i,j)==1) {
40 printf("%lld %lld\n", i, j);
41 --m;
42 if(!m) return 0;
43 }
44 }
45 }
46 return 0;
47 }

codeforces 1009D Relatively Prime Graph【欧拉函数】的更多相关文章

  1. Codeforces 906D Power Tower(欧拉函数 + 欧拉公式)

    题目链接  Power Tower 题意  给定一个序列,每次给定$l, r$ 求$w_{l}^{w_{l+1}^{w_{l+2}^{...^{w_{r}}}}}$  对m取模的值 根据这个公式 每次 ...

  2. CodeForces - 1009D Relatively Prime Graph

    题面在这里! 直接暴力找点对就行了,可以证明gcd=1是比较密集的,所以复杂度略大于 O(N log N) #include<bits/stdc++.h> #define ll long ...

  3. Codeforces 1114F Please, another Queries on Array? [线段树,欧拉函数]

    Codeforces 洛谷:咕咕咕 CF少有的大数据结构题. 思路 考虑一些欧拉函数的性质: \[ \varphi(p)=p-1\\ \varphi(p^k)=p^{k-1}\times (p-1)= ...

  4. Codeforces Round #538 (Div. 2) F 欧拉函数 + 区间修改线段树

    https://codeforces.com/contest/1114/problem/F 欧拉函数 + 区间更新线段树 题意 对一个序列(n<=4e5,a[i]<=300)两种操作: 1 ...

  5. CodeForces - 645F:Cowslip Collections (组合数&&欧拉函数)

    In an attempt to make peace with the Mischievious Mess Makers, Bessie and Farmer John are planning t ...

  6. Codeforces 871D Paths (欧拉函数 + 结论)

    题目链接  Round  #440  Div 1  Problem D 题意   把每个数看成一个点,如果$gcd(x, y) \neq 1$,则在$x$和$y$之间连一条长度为$1$的无向边.   ...

  7. Codeforces 1114F(欧拉函数、线段树)

    AC通道 要点 欧拉函数对于素数有一些性质,考虑将输入数据唯一分解后进行素数下的处理. 对于素数\(p\)有:\(\phi(p^k)=p^{k-1}*(p-1)=p^k*\frac{p-1}{p}\) ...

  8. Please, another Queries on Array?(Codeforces Round #538 (Div. 2)F+线段树+欧拉函数+bitset)

    题目链接 传送门 题面 思路 设\(x=\prod\limits_{i=l}^{r}a_i\)=\(\prod\limits_{i=1}^{n}p_i^{c_i}\) 由欧拉函数是积性函数得: \[ ...

  9. Codeforces 776E: The Holmes Children (数论 欧拉函数)

    题目链接 先看题目中给的函数f(n)和g(n) 对于f(n),若自然数对(x,y)满足 x+y=n,且gcd(x,y)=1,则这样的数对对数为f(n) 证明f(n)=phi(n) 设有命题 对任意自然 ...

随机推荐

  1. Linux设置开机自动挂载镜像文件

    1.将文件上传到服务器上(本例上传到/Data/software下) 2.挂载 mount -o loop /Data/software/rhel-server-7.6-x86_64-dvd.iso ...

  2. 为什么不建议用var

    看了这个例子估计你就会明白了 var a = 'global'; function test() { if (!a) { var a = 'part'; } console.log(a); } tes ...

  3. JAVA获取当前文件路径this.getClass().getResource方法详细讲解

    public class Test { public void run() { // TODO Auto-generated method stub System.out.println(" ...

  4. 关于java并发场景下,HttpServletRequst中session丢失问题

    使用场景: 在list数据进来之后使用安全数组    Lists.newCopyOnWriteArrayList() 进行了   parallelStream  并行处理,在接口中进行了登录者信息接口 ...

  5. Linux安装MYSQL并部署主从复制集群

    主节点部署 安装数据库 Ubuntu apt-get install mysql-server -y systemctl start mysql systemctl enabled mysql Cen ...

  6. 奇艺iOS移动端网络优化实践 | 请求成功率优化篇 原创 Charles 爱奇艺技术

    奇艺iOS移动端网络优化实践 | 请求成功率优化篇 原创 Charles 爱奇艺技术

  7. Excel 如何实现以万为单位 保留两位小数 且不四舍五入

    数据科学交流群,群号:189158789,欢迎各位对数据科学感兴趣的小伙伴的加入! =TEXT(INT(I18/100)*1000,"0!.00,万") 将I18替换成你要转化的单 ...

  8. java HashMap and HashMultimap 区别

    http://stackoverflow.com/questions/19222029/what-is-difference-between-hashmap-and-hashmultimap The ...

  9. linux(11)配置环境变量

    前言 在自定义安装软件的时候,经常需要配置环境变量,下面进行详细解析 & nbsp; 环境变量配置文件 用户 配置文件 系统环境 /ect/profile /etc/bashrc /etc/e ...

  10. python实现经典排序算法

    以下排序算法最终结果都默认为升序排列,实现简单,没有考虑特殊情况,实现仅表达了算法的基本思想. 冒泡排序 内层循环中相邻的元素被依次比较,内层循环第一次结束后会将最大的元素移到序列最右边,第二次结束后 ...