Anti-prime Sequences
Time Limit: 3000MS   Memory Limit: 30000K
Total Submissions: 3355   Accepted: 1531

Description

Given a sequence of consecutive integers n,n+1,n+2,...,m, an anti-prime sequence is a rearrangement of these integers so that each adjacent pair of integers sums to a composite (non-prime) number. For example, if n = 1 and m = 10, one such anti-prime sequence is 1,3,5,4,2,6,9,7,8,10. This is also the lexicographically first such sequence.


We can extend the definition by defining a degree danti-prime
sequence as one where all consecutive subsequences of length 2,3,...,d
sum to a composite number. The sequence above is a degree 2 anti-prime
sequence, but not a degree 3, since the subsequence 5, 4, 2 sums to 11.
The lexicographically .rst degree 3 anti-prime sequence for these
numbers is 1,3,5,4,6,2,10,8,7,9.

Input

Input
will consist of multiple input sets. Each set will consist of three
integers, n, m, and d on a single line. The values of n, m and d will
satisfy 1 <= n < m <= 1000, and 2 <= d <= 10. The line 0 0
0 will indicate end of input and should not be processed.

Output

For
each input set, output a single line consisting of a comma-separated
list of integers forming a degree danti-prime sequence (do not insert
any spaces and do not split the output over multiple lines). In the case
where more than one anti-prime sequence exists, print the
lexicographically first one (i.e., output the one with the lowest first
value; in case of a tie, the lowest second value, etc.). In the case
where no anti-prime sequence exists, output



No anti-prime sequence exists.

Sample Input

1 10 2
1 10 3
1 10 5
40 60 7
0 0 0

Sample Output

1,3,5,4,2,6,9,7,8,10
1,3,5,4,6,2,10,8,7,9
No anti-prime sequence exists.
40,41,43,42,44,46,45,47,48,50,55,53,52,60,56,49,51,59,58,57,54
题意:在【2,d】长度的连续序列的和都要为合数。
思路:DFS。
 1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<stdlib.h>
5 #include<string.h>
6 #include<queue>
7 #include<stack>
8 #include<math.h>
9 using namespace std;
10 typedef long long LL;
11 bool prime[20000]= {0};
12 int tt[10000];
13 bool cm[1005];
14 int ts=0;
15 bool check(int n,int m);
16 int dfs(int n,int m,int d,int kk,int pp);
17 int main(void)
18 {
19 int i,j,k;
20 for(i=2; i<=1000; i++)
21 {
22 if(!prime[i])
23 {
24 for(j=i; (i*j)<=20000; j++)
25 {
26 prime[i*j]=true;
27 }
28 }
29 }
30 int n,m;
31 while(scanf("%d %d %d",&n,&m,&k),n!=0&&m!=0&&k!=0)
32 {
33 memset(cm,0,sizeof(cm));
34 ts=0;
35 int uu=dfs(0,m-n+1,k,n,m);
36 if(uu)
37 {
38 printf("%d",tt[0]);
39 for(i=1; i<(m-n+1); i++)
40 {
41 printf(",%d",tt[i]);
42 }
43 printf("\n");
44 }
45 else printf("No anti-prime sequence exists.\n");
46 }
47 }
48 bool check(int n,int m)
49 {
50 int i,j;
51
52
53 LL sum=tt[m];
54 for(i=m-1; i>=max(n,0); i--)
55 {
56 sum+=tt[i];
57 if(!prime[sum])
58 return false;
59 }
60 return true;
61 }
62 int dfs(int n,int m,int d,int kk,int pp)
63 {
64 int i;
65 if(ts)return 1;
66 if(n==m)
67 {
68
69 bool cc=check(n-d,m-1);
70 if(!cc)
71 {
72 return 0;
73 }
74 ts=1;
75 return 1;
76 }
77 else
78 {
79 bool cc=check(n-d,n-1);
80 if(cc)
81 {
82 for(i=kk; i<=pp; i++)
83 {
84 if(ts)return 1;
85 if(!cm[i])
86 {
87 tt[n]=i;
88 cm[i]=true;
89 int uu=dfs(n+1,m,d,kk,pp);
90 cm[i]=false;
91 if(uu)return 1;
92 }
93 }
94 }
95 else return 0;
96 }
97 return 0;
98 }

最新文章

  1. 建造者模式组装mybatis参数Example()
  2. Mongodb源代码阅读笔记:Journal机制
  3. django-redis和redis-py
  4. 修改git commit默认触发的编辑器
  5. 线程学习笔记(EventWaitHandler)AutoResetEvent的使用
  6. linux工具类之硬盘检测
  7. 计算器软件的代码实现 (策略模式+asp.net)
  8. Oracle基础 (十四)其他函数
  9. C/C++框架和库
  10. 洛谷P1120 小木棍
  11. Batik - 将svg转换成其他格式图片或PDF - [导出服务器配置] 导出服务器原理解析
  12. Windows下用C语言获取进程cpu使用率,内存使用,IO情况
  13. Android:Service的注意点以及一些知识点
  14. 基于爬取百合网的数据,用matplotlib生成图表
  15. Vmware下centos与windows能ping通并能上网
  16. redis入门(03)redis的配置
  17. loadrunner 添加集合点和添加压力机
  18. thinkphp添加数据 add()方法
  19. Android Spinner 设置setOnItemSelectedListener时,竟会默认触发一次事件!
  20. 【Unity】打包安卓APK常见问题

热门文章

  1. 深度探讨 PHP 之性能
  2. Demo04分解质因数
  3. ES5中改变this指向的三种方法
  4. 数组实现堆栈——Java实现
  5. python pandas 中文件的读写——read_csv()读取文件
  6. C# 使用modbus 读取PLC 寄存器地址
  7. vue在某页面监听键盘输入事件
  8. 关于@Autowired和@Resource注解区别
  9. 小迪安全 Web安全 基础入门 - 第一天 - 操作系统&amp;名词&amp;文件下载&amp;反弹SHELL&amp;防火墙绕过
  10. 11 - Vue3 UI Framework - Card 组件