sicily 1002 Anti-prime Sequences
debug了好久。。各种犯错。。按照某个学长的思路,终于AC了。。
#include <iostream>
#include <cstring>
using namespace std; int n,m,d;
bool isPrime[]; // 存储素数表
bool added[]; // 存储是否已添加到结果数组中
int re[]; // 结果存储数组
bool hasFoundResult = false; // 存储是否已找到答案 void buildPrimeDiagram() // 构建素数表
{
memset(isPrime,true,sizeof(isPrime));
for (int i = ; i <= ; i++)
{
if (isPrime[i])
for (int j = i; j*i <= ; j++)
{
isPrime[j*i] = false;
}
}
} bool passMuster(int numberOfTheNumbersAdded) // 判断到当前为止符合要求,是返回true,否返回false
{
int sum = re[numberOfTheNumbersAdded];
for (int i = , j = numberOfTheNumbersAdded-; i < d&&j>=; i++,j--)
{
sum+=re[j];
if (isPrime[sum]) return false;
}
return true;
} void dfs(int numberOfTheNumbersAdded) // 一个个的添加符合要求的数到结果数组中
{
if (numberOfTheNumbersAdded == m-n+) // 添加完全时
{
hasFoundResult = true;
return;
}
for (int i = n; i <= m; i++)
{
if (!added[i]) // i还未被添加时
{
re[numberOfTheNumbersAdded] = i; // 将i添加到结果数组
if (passMuster(numberOfTheNumbersAdded)) // 如果添加i后符合要求
{
added[i] = true;
dfs(numberOfTheNumbersAdded+); // 添加下一个
if (hasFoundResult) return; // 如果找到答案直接返回
added[i] = false; // 没有找到时, 把i的状态设为未添加
}
}
}
} int main()
{
buildPrimeDiagram();
while (cin>>n>>m>>d)
{
if (n==&&m==&&d==) break;
hasFoundResult = false; // 设为未找到答案
int numberOfTheNumbersAdded = ;
memset(added, false, sizeof(added));
dfs(numberOfTheNumbersAdded); // 寻找答案
if (hasFoundResult)
{
for (int i = ; i <= m-n; i++)
{
if (i!=) cout<<',';
cout<<re[i];
}
cout<<endl;
}
else cout<<"No anti-prime sequence exists."<<endl;
}
return ;
}
sicily 1002 Anti-prime Sequences的更多相关文章
- Who Gets the Most Candies?(线段树 + 反素数 )
Who Gets the Most Candies? Time Limit:5000MS Memory Limit:131072KB 64bit IO Format:%I64d &am ...
- 1002: Prime Path
题目链接:http://172.16.200.33/JudgeOnline/problem.php?id=1002 题意:给你两个四位数的素数,求最少经过多少步的变化能够从一个素数变到另一个素数.在变 ...
- Sicily 1444: Prime Path(BFS)
题意为给出两个四位素数A.B,每次只能对A的某一位数字进行修改,使它成为另一个四位的素数,问最少经过多少操作,能使A变到B.可以直接进行BFS搜索 #include<bits/stdc++.h& ...
- sicily 1500. Prime Gap
Description The sequence of n ? 1 consecutive composite numbers (positive integers that are not prim ...
- <Sicily>Prime Palindromes
一.题目描述 The number 151 is a prime palindrome because it is both a prime number and a palindrome (it i ...
- hdu 1002 prime 模板
Constructing Roads Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- [1002]prime
输入一个数,判断其是否为素数: 本题有多组测试样例. 输入规则如下: 第一行为一个整数,样例组数T: 第二至第t+1行每行都有一个整数a(a >= 2),表示需要处理的数: 如果是素数则输出“y ...
- CSUFT 1002 Robot Navigation
1002: Robot Navigation Time Limit: 1 Sec Memory Limit: 128 MB Submit: 4 Solved: 2 Descript ...
- (Problem 49)Prime permutations
The arithmetic sequence, 1487, 4817, 8147, in which each of the terms increases by 3330, is unusual ...
随机推荐
- Git 学习笔记(三)
我记得最初学习的时候我提到了使用版本控制软件的最大好处是让你可以永远后悔,那么如何吃后悔药呢?在项目过程中我们很有可能因为各种因素对我们的操作进行回滚,对于传统的版本控制系统来说,并不复杂,拿 SVN ...
- canvas制作刮刮乐案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- <Android Framework 之路>Android5.1 Camera Framework(二)
上一次讲解了一下CameraService的启动过程,今天梳理一下Camera预览的过程 StartPreview过程 首先,我们还是从应用层的使用入手 Camera.java (packages\a ...
- TextView 限制最大行数、最小行数、字数超过“...”表示
最小行数: android:minLines = "2" //最小行数为2 最大行数: android:maxLines = "2" //最大行数为2 文字超过 ...
- MAC 下的pycharm部分使用方法
1.在创建之初,可以选择自己想要使用的python版本. 如果之后想要更换Python版本,可以通过~~~更换选择Python版本. 2.创建.py文件,点击文件名,出现如下界面: 点击new--py ...
- css——overflow
Overflow:属性规定当前内容溢出元素框时发生的事情 1.当内容过多,元素框溢出 1)hidden:隐藏超出部分(overflow: hidden;) 2)auto:有下拉滚动条(overflow ...
- 《Let's Build A Simple Interpreter》之 Golang 版
一直以来对编译器/解释器等都较有兴趣.我非科班出身,当初还在大学时,只是马马虎虎看完了<编译原理>之类教材,上机非常少,对龙书之类圣经也只是浅尝辄止而已.工作至今,基本已将编译原理相关知识 ...
- s5k4ba摄像头驱动分析
注释: 本驱动是基于S5PV310的,但是全天下的摄像头驱动都是采用V4L2,因此驱动框架流程基本差不多.其中fimc_init_camera()函数会回调.init函数,该函数主要就是通过IIC总线 ...
- ./configure --prefix /?/? 解释
-- ./configure :编译源码 --prefix :把所有资源文件放在 之后的路径之后
- Git:Git的安装过程
Git:Git的安装过程 路径不要存在空格 默认即可,第一项为是否在页面显示 文本编辑器,默认VIM即可 设置环境变量: 1)最安全的选择,path环境变量不会改变,你只能在git bash里使用命令 ...