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 ...
随机推荐
- javascript前端如何使用google-protobuf
1.首先下载google的protobuf的compiler,通过编译器可以将.proto文件转换为想要的语言文件. 下载地址:https://repo1.maven.org/maven2/com/g ...
- Python笔记(八)
#-*-coding:utf-8-*- # Python内置函数 print abs(-45) # 绝对值函数 print divmod(7,2) # 返回一个包含商和余数的元组 # input(&q ...
- ML学习笔记- 神经网络
神经网络 有的模型可以有多种算法.而有的算法可能可用于多种模型.在神经网络中,对外部环境提供的模式样本进行学习训练,并能存储这种模式,则称为感知器;对外部环境有适应能力,能自动提取外部环境变化特征,则 ...
- 迁移oracle数据库至新分区
本文地址: http://www.cnblogs.com/blackmanba/p/move-oracle-database.html或者http://forkme.info/move-oracle- ...
- Django开发之路 二(django的models表查询)
django的models表查询 一.单表查询 (1) all(): 查询所有结果 # 返回的QuerySet类型 (2) filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 #返 ...
- 后台通过Request取得多个含有相同name的控件的值
string[] arrWeight = context.Request.Params.GetValues("Quantity");
- Windos下的6种IO模型简要介绍
windows进行数据的收发有6种IO模型.分别是阻塞(blocking)模型,选择(select)模型,异步选择(WSAAsyncSelect)模型,事件选择(WSAEventSelect )模型, ...
- OracleRef游标
提到个思考:怎样让游标作为参数传递? 解决这个问题就需要用到 REF Cursor . 1,什么是 REF游标? 动态关联结果集的临时对象.即在运行的时候动态决定执行查询. 2,REF 游标有什 ...
- 深入剖析 iOS 性能优化
问题种类 时间复杂度 在集合里数据量小的情况下时间复杂度对于性能的影响看起来微乎其微.但如果某个开发的功能是一个公共功能,无法预料调用者传入数据的量时,这个复杂度的优化显得非常重要了.上图列出了各种情 ...
- failed to push some refs to 'git@github.com:RocsSun/mytest.git
Git推送到GitHub仓库失败 使用Git将文件推送至GitHub的远程仓库时,报错failed to push some refs to 'git@github.com:RocsSun/mytes ...