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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

质数乘积 -LintCode

發布時間:2023/12/8 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 质数乘积 -LintCode 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給定一個無重復的質數數組arr,每個質數最多使用一次,求所有無重復的乘積并從小到大排序。

注意事項 2 <= |arr| <= 9 2 <= arr[i] <= 23

樣例
給出 arr = [2,3], 返回 [6]。

解釋: 2*3=6。

給出 arr = [2,3,5], 返回 [6,10,15,30]。

解釋: 2*3=6, 2*5=10, 3*5=15, 2*3*5=30

思路
用arr的前兩個元素初始化res,每增加一個元素arr[i],在res中添加arr中i位置之前的元素與arr[i]的乘積,再添加原res中所有元素與arr[i]的乘積。
例如 {2,3,5,7}
開始res={2*3}={6}
添加5,{2*5,3*5}={10,15},{6*5}={30}
res={6,10,15,30}
添加7,{2*7,3*7,5*7}={14,21,35},{6*7,10*7,15*7,30*7}={42,70,105,210}
res={6,10,14,15,21,30,35,42,70,105,210}

#ifndef C896_H #define C896_H #include<iostream> #include<vector> #include<set> #include<algorithm> using namespace std; class Solution { public:/*** @param arr: The prime array* @return: Return the array of all of prime product*/vector<int> getPrimeProduct(vector<int> &arr) {// Write your code herevector<int> res;sort(arr.begin(), arr.end());//用arr的前兩個元素初始化resres.push_back(arr[0] * arr[1]);//每增加一個元素arr[i],在res中添加arr中i位置之前的元素與arr[i]的乘積//再添加原res中所有元素與arr[i]的乘積for (int i = 2; i < arr.size(); ++i){int len = res.size();for (int j = 0; j < i; ++j)res.push_back(arr[i] * arr[j]);for (int k = 0; k < len; ++k)res.push_back(arr[i] * res[k]);}sort(res.begin(), res.end());return res;} }; #endif

總結

以上是生活随笔為你收集整理的质数乘积 -LintCode的全部內容,希望文章能夠幫你解決所遇到的問題。

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