题目链接

题目大意

让你找出x的两个因子d1>1,d2>1使得gcd(d1+d2,x)=1

题目思路

首先要明白gcd的性质

gcd(a,b)=gca(a+b,b)
if(gcd(a,c)==1) gcd(a,bc)=gcd(a,b)

则推出当x与y互质gcd(x+y,x*y)=1

那么就简单了,直接唯一分解x=p1^ t1 p2^ t2 p3^ t3…令d1=p1^t1 ,d2=x/d1即可

注意唯一分解定理要先欧拉筛,不然会TLE,然后其实可以直接欧拉筛的时候预处理他的最小质因子即可更快

不预处理代码

#include<set>
#include<queue>
#include<vector>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn=1e7+5;
int n,a[maxn],d1[maxn],d2[maxn];
int isprime[maxn],prime[maxn],numprime;
void getprime(int n){for(int i=2;i<=n;i++){if(!isprime[i]){prime[++numprime]=i;}for(ll j=1;j<=numprime&&i*prime[j]<=n;j++){isprime[i*prime[j]]=1;if(i%prime[j]==0) break;}}
}
void cal(int pos,int x){for(int i=1;i<=numprime&&1ll*prime[i]*prime[i]<=x;i++){if(x%prime[i]==0){d1[pos]=1;while(x%prime[i]==0){d1[pos]*=prime[i];x/=prime[i];}if(x!=1){d2[pos]=x;}else{d1[pos]=d2[pos]=-1;}return ;}}d1[pos]=d2[pos]=-1;
}
int main(){getprime(1e7);scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);cal(i,a[i]);}for(int i=1;i<=n;i++){printf("%d%c",d1[i],i==n?'\n':' ');}for(int i=1;i<=n;i++){printf("%d%c",d2[i],i==n?'\n':' ');}return 0;
}

预处理代码

#include<set>
#include<queue>
#include<vector>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn=1e7+5;
int n,a[maxn],d1[maxn],d2[maxn];
int isprime[maxn],prime[maxn],numprime;
void getprime(int n){for(int i=2;i<=n;i++){if(isprime[i]==0){prime[++numprime]=i;}for(ll j=1;j<=numprime&&i*prime[j]<=n;j++){isprime[i*prime[j]]=prime[j];//最小的质因数if(i%prime[j]==0) break;}}
}
void cal(int pos,int x){if(isprime[x]==0){d1[pos]=d2[pos]=-1;}else{d1[pos]=1;int misu=isprime[x];//最小的质因数while(x%misu==0){x=x/misu;d1[pos]*=misu;}if(x!=1){d2[pos]=x;}else{d1[pos]=d2[pos]=-1;}}
}
int main(){getprime(1e7);scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);cal(i,a[i]);}for(int i=1;i<=n;i++){printf("%d%c",d1[i],i==n?'\n':' ');}for(int i=1;i<=n;i++){printf("%d%c",d2[i],i==n?'\n':' ');}return 0;
}

Educational Codeforces Round 89 (Rated for Div. 2) D. Two Divisors(数论)相关推荐

  1. Educational Codeforces Round 89 (Rated for Div. 2)(A, B, C, D)

    Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords 思路 题意非常简单,就是得到最多的物品嘛,我们假定a, ...

  2. Educational Codeforces Round 77 (Rated for Div. 2) C. Infinite Fence 数论

    传送门 文章目录 题意: 思路: 题意: 思路: 碰到这样的题肯定是先写几个找找规律了,随便写几个就可以发现是以lcm(a,b)lcm(a,b)lcm(a,b)为一个循环,所以我们只需要在一个周期lc ...

  3. Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)

    Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...

  4. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  5. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

  6. Educational Codeforces Round 37 (Rated for Div. 2) 1

    Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...

  7. Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs

    传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici​个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...

  8. Educational Codeforces Round 72 (Rated for Div. 2) D. Coloring Edges dfs树/拓扑找环

    传送门 文章目录 题意: 思路: 题意: 给你一张图,你需要给这个图的边染色,保证如果有环那么这个环内边的颜色不全相同,输出染色方案和用的颜色个数. n,m≤5e3n,m\le5e3n,m≤5e3 思 ...

  9. Educational Codeforces Round 111 (Rated for Div. 2) D. Excellent Arrays 组合数学

    传送门 文章目录 题意: 思路: 题意: 给你一个数组aia_iai​,定义一个数组是好的当且仅当对于所有iii都有ai!=ia_i!=iai​!=i.定义f(a)f(a)f(a)表示数组aaa中i& ...

最新文章

  1. linux 日志服务器简单用
  2. java拆分单元格_Java 拆分Excel单元格数据为多列
  3. 计算机网络的资源共享功能包,计算机网络的资源共享功能包括
  4. 美国计算机科学联赛获奖,【竞赛获奖】西安高新一中国际班学子在2018-2019美国计算机科学联赛 (ACSL)积分赛中创造历史!...
  5. KSQL中Update多表级联更新的语法
  6. 面向对象15:单例设计模式、main方法的使用
  7. 2019年1月1日起,电商法实施、电子证照“国标”正式发布
  8. pwrkey直接接地 sim7020_有方模块常见问题解答
  9. tplink703无线打印服务器,tplink703路由器怎么配置client模式
  10. Python穷举法连接WiFi
  11. 阿里巴巴校招内推简历筛选方案
  12. 国产首发:上海川土微电子数字接口电源数字隔离芯片模拟芯片领导者
  13. 大调小调是什么意思?
  14. 第五天实验---MGRE环境下的OSPF实验
  15. 谷歌浏览器截全图小技巧
  16. vue项目json格式化显示
  17. 【材料整理】 -- DTI相关知识点
  18. Linux下自动重启系统
  19. 从月薪3千到3万,需要努力多久?
  20. 解决UglifyJs Unexpected token punc «{», expected pun 报错问题

热门文章

  1. 影像分析器之:波形示波器
  2. xmanager 5下载安装
  3. MediaPlayer+TextureView,完美切换全屏、小窗口的 Android 视频播放器
  4. CDA数据分析师视频教程全套零基础入门excel考试教学课程2022
  5. windows安装sonarqube7.4+sonar-scanner-cli【JDK8+MySQL】
  6. [蓝牙] 1、蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)
  7. CentOS7光盘定制化
  8. 2021年安全生产模拟考试(建筑安全员B证-项目负责人模拟考试题库)安考星
  9. 判断电脑是否安装WPS
  10. 多项式输出(来源暂无)