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 ...
随机推荐
- 17.UNP第一章 简介
获取时间的客户端代码: //客户端程序 #include "unp.h" int main(int argc, char **argv) { int sockfd, n; ]; s ...
- 算法入门经典-第六章 例题6-21 SystemDependencies
题意:软件组件之间会有依赖关系,比如你下一个Codeblocks你也得顺带着把编译器给下上.你的任务是模拟安装和卸载软件组件的过程.有以下五种指令,如果指令为“END”则退出程序:若为以下四种指令,则 ...
- DIV水平方向居中的几种方法
一.使用margin: 1 #center0 { 2 background: red; 3 margin: 0 auto; 4 } 或者: margin: auto; 这样的前提是父盒子里没有其他盒子 ...
- Android实现图片相似度
Android实现图片相似度 最近公司有一个需求,就是希望能判断用户提交的照片是否是身份证的正面或者反面.可以通过预设一张拍摄清晰的身份证正面或者反面,来对比是否相似,那么问题就转化为如何计算两张图片 ...
- 让html页面不缓存js的实现方法
很多朋友都会碰到这样的情况:如果我们页面加载了js的话下次打开时也会是调用这个js缓存文件,但对于我们调试时是非常的不方便了,本文就来谈论如何解决这一问题,下面一起来看看. 不缓存JS的方法其实挺简单 ...
- Linux部署之NFS方式安装系统
1. 让客户端从网络启动并且选择第二项 2. 选择语言 3. 选择键盘布局 4. 选择安装方式为NFS 5. ...
- Windows下绿色版Tomcat部署Thingworx 7.4
绿色版Tomcat部署Thingworx7.4和安装只有一个不同之处,安装版Tomcat需要在Configure Tomcat的Java标签下设置Java Options,但是绿色版并没有这个exe程 ...
- 【前端分享】 JavaScript最经典的55个技巧(转)
从别的地方看到的,保存下,有空实践下再补充. 1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键 <tab ...
- JQuery中text(),html(),val()的区别
这3个都是jquery类库中的语法,分别是: text():获取或者改变指定元素的文本: html():获取或改变指定元素的html元素以及文本: val():获取或者改变指定元素的value值(一般 ...
- linux C++ 编译错误 file not found 其实是原文件后缀的问题
gcc和clang会根据源文件的后缀.c或者.cpp判断原文件类型,采取不同的编译策略,所以我使用它们编译后缀是.c的C++原文件的时候会出现找不到include的文件的错误,使用正确的后缀名即可.同 ...