日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

D - ABC Conjecture Gym - 102798D

發(fā)布時(shí)間:2023/12/3 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 D - ABC Conjecture Gym - 102798D 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

D - ABC Conjecture Gym - 102798D

題意:

規(guī)定rad(n)=n的所有質(zhì)因子的乘積
給你一個(gè)c,問(wèn)能否構(gòu)造a和b使得a+b=c且rad(abc)<c

題解:

先說(shuō)結(jié)論,如果c可以拆分出兩個(gè)一樣的質(zhì)因子,則能構(gòu)造a和b
即 n=p1a1 * p2a2 . . .*pnan,
a1到an有一個(gè)>=2即可
為什么?
首先如果a1到an都是1,那rad?=c,那么rad(abc)不可能小于c
如果a1到an存在一個(gè)>=2,怎么能夠說(shuō)明rad(abc)<c?看下圖

看本題,1<=c<=1e18
線性篩可以曬出1e7以內(nèi),那么也就是可以解決[1,1e14]以內(nèi)的c,那1e14到1e18之間如何解決?
我們想c = P n *x,n>=2
P為[1e14,1e18]以內(nèi)的素?cái)?shù),那n只能是2,不然c就超范圍了,而x最大也才到1e4,所有我們可以將c先除x,然后看(int)sqrt(c/x) 的平方是否等于c/x,相當(dāng)于反向驗(yàn)證了是否存在P
詳細(xì)看代碼:

代碼:

#include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=1e7; int prime[maxn+1]; bool vis[maxn]; void getprime() {vis[1]=1;for(int i=2;i<=maxn;i++){if(!vis[i])prime[++prime[0]]=i;for(int j=1;j<=prime[0]&&prime[j]<=maxn/i;j++){vis[prime[j]*i]=1;if(i%prime[j]==0)break;}} } int main() {getprime();int t;cin>>t;while(t--){ll x;cin>>x;bool f=0;for(int j=1;j<=prime[0];j++){if(x%(prime[j]*prime[j])==0){f=1;break;}else if(x==1){f=0;break;}else if(x%prime[j]==0)x/=prime[j];}if(f==1)cout<<"yes"<<endl;else if(x==1)cout<<"no"<<endl;else {ll w=sqrt(1.0*x);if(w*w==x)cout<<"yes"<<endl;else cout<<"no"<<endl;}}return 0; } /* 54 1000000007 */

總結(jié)

以上是生活随笔為你收集整理的D - ABC Conjecture Gym - 102798D的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。