【openjudge】素數環
問題 A(2266): 【基礎演算法】素數環
時間限制: 5 Sec 記憶體限制: 128 MB
提交: 224 解決: 102
[提交][狀態][我的提交]
題目描述
輸入正整數n,把整數1,2,3,…,n組成一個環,使得相鄰兩個整數之和均為素數。小強同學看過這個題,笑了:呵呵,打表!
Mr. Wu為了阻止小強打表,決定這樣:
把全部的解按字典序排序後,從1開始編號,依次輸出指定編號的k組解。最後一行輸出總的方案數。同一個素數環只算一次。
輸入
第1行:2個整數,n(n<=18)和k(1<=k<=10)
第2行:共有k個從小到大排列的整數,表示要輸出的解的編號。
輸出
前k行,每行一組解,對應於一個輸入
第k+1行:一個整數,表示總的方案數。
樣例輸入
Copy (如果複製到控制檯無換行,可以先貼上到文字編輯器,再複製)
10 4
1 2 5 8
樣例輸出
1 2 3 4 7 6 5 8 9 10
1 2 3 4 7 10 9 8 5 6
1 2 3 8 5 6 7 10 9 4
1 2 3 10 9 8 5 6 7 4
96
提示
輸入樣例說明:
對1,2,…,10組成素數環。要輸出字典序的第1,2,5,8等4組解
輸出樣例說明:
第1,2,5,8組解分別是樣例中所列的4行。總共有96組解。
[提交][狀態][討論版]
進步的天梯:
1~‘同一個素數環只算一次。’,同學們看到這個提示,一定要注意:我們面對的字元是連在一起的(注意),所以,我們在看到這樣的提示,一定要固定一個數為開頭(就像火車有火車頭),只有這樣,我們才好計算。
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int n,num,k;
int j=1;
int a[15],sum=1;
bool z[25];
int su[25];
bool pd(int m) //判斷素數
{
for(int i=2;i<=sqrt(m);i++) //注意要開方(死結構)
if(m%i==0) return 0;
return 1;
}
void print() //輸出
{
for(int i=1;i<n;i++)
printf("%d ",su[i]);
printf("%d\n",su[n]);
}
int search(int x)
{
for(int i=2;i<=n;i++)//已定開頭
{
if((z[i]==0)&&pd(i+su[x-1]))
{
z[i]=1;
su[x]=i;
if(x==n)
{
if(pd(su[n]+su[1]))
{
num++;
if(num==a[sum])
{
sum++;print();
}
}
}
else search(x+1);
z[i]=0;
}
}
}
int main()
{
scanf("%d%d",&n,&k);
for(int i=1;i<=k;i++)
scanf("%d",&a[i]);
su[1]=1; //定義1為開頭
z[1]=1;
search(2);
printf("%d",num);
}
/**************************************************************
Problem: 2266
User: ybxq005
Language: C++
Result: 正確
Time:3993 ms
Memory:1044 kb
****************************************************************/
相關推薦
【openjudge】素數環
問題 A(2266): 【基礎演算法】素數環 時間限制: 5 Sec 記憶體限制: 128 MB 提交: 224 解決: 102 [提交][狀態][我的提交] 題目描述 輸入正整數n,把整數1,2,3,…,n組成一個環,使得相鄰兩個整數之和均為素數
【經典演算法問題】素數環問題
/* 素數環問題 2014-4-8 17:22:28 */ #include <stdio.h> #include <math.h> #include <string.h> bool hasSelected[21]; int sit
【BZOJ4773】負環 倍增Floyd
方法 family 包含 -s sharp 有向圖 。。 ret space 【BZOJ4773】負環 Description 在忘記考慮負環之後,黎瑟的算法又出錯了。對於邊帶權的有向圖 G = (V, E),請找出一個點數最小的環,使得 環上的邊權和為負數。保證
【模板】負環(spfa)
sizeof 貪心 com image 一行 clas 存在 cst -m 洛谷——P3385 【模板】負環 題目描述 暴力枚舉/SPFA/Bellman-ford/奇怪的貪心/超神搜索 輸入輸出格式 輸入格式: 第一行一個正整數T表
洛谷P3385 【模板】負環 DFS-SPFA 判負環 圖論
string inf scan space can 清空 span %d pre 洛谷P3385 【模板】負環 圖論 今天get了 一個 DFS-SPFA 判負環的方法 一般的 BFS-SPFA 判負環 一般就是 不停地做,如果某點第 n+1次加入隊列中,那麽說明這個圖存在
【openjudge】C15C Rabbit's Festival CDQ分治+並查集
amp rabbit class printf sdn 題解 {} .net log 題目鏈接:http://poj.openjudge.cn/practice/C15C/ 題意:n 點 m 邊 k 天。每條邊在某一天會消失(僅僅那一天消失)。問每一天有多少對點可以相互到達
洛谷—— P3385 【模板】負環
next i++ bre 表示 一個 ace amp 存在 algo 題目描述 暴力枚舉/SPFA/Bellman-ford/奇怪的貪心/超神搜索 輸入輸出格式 輸入格式: 第一行一個正整數T表示數據組數,對於每組數據: 第一行兩個正整數N M,表示圖有N個
【poj 3385】【模板】負環
ios 判斷負環 main 判斷 次數 sin 輸出格式 print front 題目描述 暴力枚舉/SPFA/Bellman-ford/奇怪的貪心/超神搜索 輸入輸出格式 輸入格式: 第一行一個正整數T表示數據組數,對於每組數據: 第一行兩個正整數N M,表示圖
Python開發【四】循環
內容 循環 pri python div 所有 clas bsp pre While循環 基本循環 while 條件: 執行內容 #循環體 ... #循環體 ... #循環體 # 若條件為真,執行循環體內容 #
【基礎】循環數 【模擬】
int under 每一個 宋體 can port toc log flag 1096: 【基礎】循環數【模擬】 時間限制: 1 Sec 內存限制: 128 MB提交: 426 解決: 283[提交][狀態][討論版] 題目描述 描述 n 位的一個整數是循環數(cyc
【基礎】循環以及循環控制語句
初始 返回 自增 區別 嵌套for循環 循環結構 使用方法 後置 共同點 while: /* 演示while和do...while的使用方法及區別 while (表達式){ 代碼塊 } do { 代碼塊 } while(表達式); while與
【openjudge】【字符串+模擬】1777:文件結構“圖”
不用 第一個 LG cstring \n 函數 算法分析 參數 i++ 【題目傳送門:】戳 【描述:】 在計算機上看到文件系統的結構通常很有用。Microsoft Windows上面的"explorer"程序就是這樣的一個例子。但是在有圖形界面之前,沒有圖形化的表示方法的,
p3385 【模板】負環(spfa)
最短 ack 內容 獲得 getchar() 比較 char s str reg 題目描述 毒瘤數據要求判負環 分析: 還是融合了不少題解的思想的。 負環定義: 權值和為負的環 //在網絡上並沒有找到一個官方定義,暫且這麽理解。 SPFA: 支持負邊權的情況. spfa是最
「P3385」【模板】負環(spfa
題目描述 暴力列舉/SPFA/Bellman-ford/奇怪的貪心/超神搜尋 輸入輸出格式 輸入格式: 第一行一個正整數T表示資料組數,對於每組資料: 第一行兩個正整數N M,表示圖有N個頂點,M條邊 接下來M行,每行三個整數a b w,表示a->b有一條權值為w的邊(若w&
【BZOJ4773】負環-倍增+Floyd
測試地址:負環 做法: 本題需要用到倍增+Floyd。 我們很快能想出 O (
圖論-環-洛谷P3385【模板】負環
這道題有毒啊。。輸出的不是“NO”是“N0”,不是“YES”而是“YE5”。被坑了一晚上。 另外,spfa-dfs竟然被卡死了,只能過9個點。換成三行就寫完的Bellmam-Ford就AC了 SPFA-
【數學】【數論】素數的線性篩法
寫在前面 記錄了個人的學習過程,同時方便複習 素數的線性篩法 有時候需要篩出來一張素數表,即1~n範圍內的所有素數 一個個列舉判斷是否為素數顯然太慢 於是經過仔細的研究之後,發現如果存在正整數k(k>2)不是素數,那麼它的因子裡面一
問題 : 【函式】素數的判斷 簡單 函式
題目描述 請編寫函式PrimeJudge,其功能是判斷一個整數num是否為素數,如果是素數,則返回1,否則返回0。 #include <stdio.h> //你需要提交的程式碼 int main() { int num; scanf("%d",&
【數論】素數
素數: 素數指的是:因子只有 1 和它本身。 素數的分佈: 素數分佈的應用 例題:素數個數的位數(nefu 117) 題目連結 素數個數的位數 Description 小明是一個聰明的孩子,對數論有著很濃烈的興趣。他發現求1到正整數10n 之間
Luogu P3385 【模板】負環
題目描述 暴力列舉/SPFA/Bellman-ford/奇怪的貪心/超神搜尋 輸入輸出格式 輸入格式: 第一行一個正整數T表示資料組數,對於每組資料: 第一行兩個正整數N M,表示圖有N個頂點,M條邊 接下來M行,每行三個整數a b w,表示a->b