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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CodeForces - 1419E Decryption(质因子分解+构造)

發(fā)布時間:2024/4/11 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CodeForces - 1419E Decryption(质因子分解+构造) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:給出一個數(shù) n ,現(xiàn)在需要將其所有大于 1 的因子重新排列成一個首尾相接的環(huán),規(guī)定每次操作可以在相鄰兩個位置中加入這兩個數(shù)的 lcm,問最少需要操作多少次,才能使得環(huán)上所有相鄰的兩個位置都不互質(zhì),并輸出最初始的排列

題目分析:可以將所有的數(shù)分為兩種情況:

  • n 由兩個質(zhì)數(shù)相乘得到,如樣例 1 所示,此時直接輸出即可,需要一次操作數(shù)
  • 其余情況都不需要操作,質(zhì)因子分解后如下圖所示排列即可
  • 需要注意的是當(dāng)質(zhì)因子的個數(shù)為 2 時需要特判一下,不然會出現(xiàn)數(shù)字重復(fù)使用的情況

    代碼:
    ?

    //#pragma GCC optimize(2) //#pragma GCC optimize("Ofast","inline","-ffast-math") //#pragma GCC target("avx,sse2,sse3,sse4,mmx") #include<iostream> #include<cstdio> #include<string> #include<ctime> #include<cmath> #include<cstring> #include<algorithm> #include<stack> #include<climits> #include<queue> #include<map> #include<set> #include<sstream> #include<cassert> #include<bitset> #include<unordered_map> using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=1e5+100;vector<int>p,fac;map<int,bool>vis;bool is_prime(int n)//試除法判斷質(zhì)數(shù) {for(int i=2;i*i<=n;i++)if(n%i==0)return false;return true; }void only(int n)//質(zhì)因子分解 {p.clear();for(int i=2;i*i<=n;i++)if(n%i==0){p.push_back(i);while(n%i==0)n/=i;}if(n!=1)p.push_back(n); }void pri(int n)//因數(shù)分解 {fac.clear();for(int i=2;i*i<=n;i++)if(n%i==0){fac.push_back(i);if(n/i!=i)fac.push_back(n/i);}fac.push_back(n); }int main() { #ifndef ONLINE_JUDGE // freopen("data.in.txt","r",stdin); // freopen("data.out.txt","w",stdout); #endif // ios::sync_with_stdio(false);int w;cin>>w;while(w--){int n;scanf("%d",&n);pri(n);only(n);if(fac.size()==3&&is_prime(p[0])&&is_prime(p[1])){for(int x:fac)printf("%d ",x);puts("\n1");continue;}vis.clear();for(int i=0;i<p.size();i++)vis[p[i]*p[(i+1)%p.size()]]=true;for(int i=0;i<p.size();i++){for(int x:fac)if(x%p[i]==0&&!vis.count(x)){vis[x]=true;printf("%d ",x);}if(p.size()==2&&i==0)continue;printf("%d ",p[i]*p[(i+1)%p.size()]);}puts("\n0");}return 0; }

    ?

    總結(jié)

    以上是生活随笔為你收集整理的CodeForces - 1419E Decryption(质因子分解+构造)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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