Educational Codeforces Round 89 (Rated for Div. 2) D. Two Divisors(数论)
题目链接
题目大意
让你找出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(数论)相关推荐
- 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, ...
- Educational Codeforces Round 77 (Rated for Div. 2) C. Infinite Fence 数论
传送门 文章目录 题意: 思路: 题意: 思路: 碰到这样的题肯定是先写几个找找规律了,随便写几个就可以发现是以lcm(a,b)lcm(a,b)lcm(a,b)为一个循环,所以我们只需要在一个周期lc ...
- 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这个时候两 ...
- Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...
- Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...
- Educational Codeforces Round 37 (Rated for Div. 2) 1
Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...
- Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs
传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...
- Educational Codeforces Round 72 (Rated for Div. 2) D. Coloring Edges dfs树/拓扑找环
传送门 文章目录 题意: 思路: 题意: 给你一张图,你需要给这个图的边染色,保证如果有环那么这个环内边的颜色不全相同,输出染色方案和用的颜色个数. n,m≤5e3n,m\le5e3n,m≤5e3 思 ...
- 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& ...
最新文章
- linux 日志服务器简单用
- java拆分单元格_Java 拆分Excel单元格数据为多列
- 计算机网络的资源共享功能包,计算机网络的资源共享功能包括
- 美国计算机科学联赛获奖,【竞赛获奖】西安高新一中国际班学子在2018-2019美国计算机科学联赛 (ACSL)积分赛中创造历史!...
- KSQL中Update多表级联更新的语法
- 面向对象15:单例设计模式、main方法的使用
- 2019年1月1日起,电商法实施、电子证照“国标”正式发布
- pwrkey直接接地 sim7020_有方模块常见问题解答
- tplink703无线打印服务器,tplink703路由器怎么配置client模式
- Python穷举法连接WiFi
- 阿里巴巴校招内推简历筛选方案
- 国产首发:上海川土微电子数字接口电源数字隔离芯片模拟芯片领导者
- 大调小调是什么意思?
- 第五天实验---MGRE环境下的OSPF实验
- 谷歌浏览器截全图小技巧
- vue项目json格式化显示
- 【材料整理】 -- DTI相关知识点
- Linux下自动重启系统
- 从月薪3千到3万,需要努力多久?
- 解决UglifyJs Unexpected token punc «{», expected pun 报错问题
热门文章
- 影像分析器之:波形示波器
- xmanager 5下载安装
- MediaPlayer+TextureView,完美切换全屏、小窗口的 Android 视频播放器
- CDA数据分析师视频教程全套零基础入门excel考试教学课程2022
- windows安装sonarqube7.4+sonar-scanner-cli【JDK8+MySQL】
- [蓝牙] 1、蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)
- CentOS7光盘定制化
- 2021年安全生产模拟考试(建筑安全员B证-项目负责人模拟考试题库)安考星
- 判断电脑是否安装WPS
- 多项式输出(来源暂无)