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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1096 Consecutive Factors (20 分)【难度: 一般 / 爆搜 数论】

發布時間:2025/3/20 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1096 Consecutive Factors (20 分)【难度: 一般 / 爆搜 数论】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


https://pintia.cn/problem-sets/994805342720868352/problems/994805370650738688
注意測試點1: 72=2*3*3*4
我這里是直接先分解因子,將所有因子存一下,然后爆搜。

#include<bits/stdc++.h> using namespace std; vector<int>a,ve,ans; void dfs(int n,int index) {if(n==1){vector<int>temp;int l=0,r=0;//存一下最大的連續的因子的左右邊界for(int i=0;i<ve.size();i++) {int j=i;while(j+1!=ve.size()&&ve[j+1]-ve[j]==1) j++;if(j-i>r-l) r=j,l=i;}for(int i=l;i<=r;i++) temp.push_back(ve[i]);if(temp.size()>ans.size()) ans=temp;else if(temp.size()==ans.size()&&temp<ans) ans=temp;return;}for(int i=index;i<a.size();i++){if(n%a[i]==0){ve.push_back(a[i]);dfs(n/a[i],index);ve.pop_back();}} } int main(void) {int n; cin>>n;for(int i=1;i<=n/i;i++){if(n%i==0){a.push_back(i);if(i!=n/i) a.push_back(n/i);}}sort(a.begin(),a.end());//從小到大排序dfs(n,1);cout<<ans.size()<<endl;for(int i=0;i<ans.size();i++) {cout<<ans[i];if(i!=ans.size()-1) cout<<"*";}return 0; }

考慮到其每一個都是因子,故我們直接可以暴力枚舉所有的連續子串即可。

#include<bits/stdc++.h> using namespace std; vector<int>a; int main(void) {int n; cin>>n;for(int i=1;i<=n/i;i++){if(n%i==0){a.push_back(i);if(n/i!=i) a.push_back(n/i);}}sort(a.begin(),a.end());int l=1,r=1;for(int i=1;i<a.size();i++){int j=i;long long int temp=a[i];while(j+1!=a.size()&&a[j+1]-a[j]==1) //連續子串{j++,temp*=a[j];if(j-i>r-l&&n%temp==0) r=j,l=i;//如果連續子串的長度大于之前的,且可以整除。}}cout<<r-l+1<<endl;for(int i=l;i<=r;i++) {cout<<a[i];if(i!=r) cout<<"*";}return 0; }

總結

以上是生活随笔為你收集整理的1096 Consecutive Factors (20 分)【难度: 一般 / 爆搜 数论】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。