【USACO】sprime
有了前面的基础,做这道题真是so easy啊。 因为要分解后每个数都是素数,所以采用先生成短的素数,长的素数在短素数的基础上生成。 比如长度为1的素数只有 2 3 5 7, 那么符合要求的长度为2的素数只可能是 21- 29 31-39 51-59 71-79 对其他长度类似。 答案的思路和我的差不多,不过更精细一些。 在增加长度时只用考虑1 3 7 9四个尾数就行了,其他都会被2或5整除。 我没有用递归,答案用了递归。 这个说不上哪个好, 我觉得尽量避开递归比较好吧,之前递归总是容易溢出。
一次就AC的代码~
#include <stdio.h>
int sp[][] = {}; //全局变量 用于存放已经生成的每个长度的超级素数
int l[] = {}; //记录每个长度的超级素数有多少个
int isprime(int N)
{
int i;
if(N == )
return ;
for(i = ; i * i <= N; i++)
{
if(N % i == )
return ;
}
return ;
}
int generate(int n)
{
if(n == )
{
sp[n-][] = ; sp[n-][] = ; sp[n-][] = ; sp[n-][] = ; l[n - ] = ;
}
else
{
int i, j, num;
for(i = ; i < l[n - ]; i++)
{
for(j = ; j <= ; j++)
{
num = sp[n - ][i] * + j;
if(isprime(num))
{
sp[n - ][l[n - ]] = num;
l[n - ]++;
}
}
}
}
return ;
}
int main()
{
FILE *in, *out;
in = fopen("sprime.in", "r");
out = fopen("sprime.out", "w");
int N;
fscanf(in, "%d", &N);
int i;
for(i = ; i<= N; i++)
{
generate(i);
}
for(i = ; i < l[N - ]; i++)
{
fprintf(out, "%d\n", sp[N - ][i]);
}
}
【USACO】sprime的更多相关文章
- POJ 1986 Distance Queries / UESTC 256 Distance Queries / CJOJ 1129 【USACO】距离咨询(最近公共祖先)
POJ 1986 Distance Queries / UESTC 256 Distance Queries / CJOJ 1129 [USACO]距离咨询(最近公共祖先) Description F ...
- 1642: 【USACO】Payback(还债)
1642: [USACO]Payback(还债) 时间限制: 1 Sec 内存限制: 64 MB 提交: 190 解决: 95 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 &quo ...
- 1519: 【USACO】超级书架
1519: [USACO]超级书架 时间限制: 1 Sec 内存限制: 64 MB 提交: 1735 解决: 891 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 Farmer Jo ...
- Java实现【USACO】1.1.2 贪婪的礼物送礼者 Greedy Gift Givers
[USACO]1.1.2 贪婪的礼物送礼者 Greedy Gift Givers 题目描述 对于一群要互送礼物的朋友,你要确定每个人送出的礼物比收到的多多少(and vice versa for th ...
- 【CPLUSOJ】【USACO】【差分约束】排队(layout)
[题目描述] Robin喜欢将他的奶牛们排成一队.假设他有N头奶牛,编号为1至N.这些奶牛按照编号大小排列,并且由于它们都很想早点吃饭,于是就很可能出现多头奶牛挤在同一位置的情况(也就是说,如果我们认 ...
- 【USACO】Dining
[题目链接] [JZXX]点击打开链接 [caioj]点击打开链接 [算法] 拆点+网络流 [代码] #include<bits/stdc++.h> using namespace std ...
- 【USACO】Optimal Milking
题目链接 : [POJ]点击打开链接 [caioj]点击打开链接 算法 : 1:跑一遍弗洛伊德,求出点与点之间的最短路径 2:二分答案,二分”最大值最小“ 3.1:建边,将 ...
- 【USACO】 Balanced Photo
[题目链接] 点击打开链接 [算法] 树状数组 [代码] #include<bits/stdc++.h> using namespace std; int i,N,ans,l1,l2; ] ...
- 【USACO】 Balanced Lineup
[题目链接] 点击打开链接 [算法] 这是一道经典的最值查询(RMQ)问题. 我们首先想到线段树.但有没有更快的方法呢?对于这类问题,我们可以用ST表(稀疏表)算法求解. 稀疏表算法.其实也是一种动态 ...
随机推荐
- 网络包处理工具NetBee
What is NetBee? NetBee is a new library intended for several types of packet processing, such as pac ...
- java基本类型转换规则
自动类型转换,也称隐式类型转换,是指不需要书写代码,由系统自动完成的类型转换.由于实际开发中这样的类型转换很多,所以Java语言在设计时,没有为该操作设计语法,而是由JVM自动完成. 具体规则为: b ...
- 快速反射DataTable
public class SetterWrapper<TTarget, TValue> { private Action<TTarget, TValue> _setter; p ...
- 转 web项目中的web.xml元素解析
转 web项目中的web.xml元素解析 发表于1年前(2014-11-26 15:45) 阅读(497) | 评论(0) 16人收藏此文章, 我要收藏 赞0 上海源创会5月15日与你相约[玫瑰里 ...
- 面试题52:缺少i的乘积数组
vector<int> multiply(const vector<int>& A) { int len = A.size(); vector<); result ...
- Java操作xml文件
Bbsxml.java public class Bbsxml { private String imgsrc; private String title; private String url; p ...
- oracle经典书籍推荐 转
很多网友询问如何选择入门书籍,学Oracle有什么好书,这里给出一些常见书籍的介 绍.首先声明,本文只涉及国外作品,因为国内的作品好的极少,大多是拼凑之作. 提到入门学习,我又得搬Tom(Thomas ...
- 百度文库,linux下安装oracle客户端
linux单独安装oracle client(oracle客户端) 更新:2013-10-17 18:30 | 标签:linux oracle 1.要远程使用oracle,先下载下面三个文件,注意 ...
- Ubuntu 12.04 安装 Chrome浏览器
1,先到chrome官网下载一个安装包 http://www.google.com/intl/zh-CN/chrome/ 2,ctrl+alt+t 打开终端. 3,在终端里输入sudo apt-get ...
- PHP数据访问
<?php //作业:把INFO表查出来用表格显示 //1.造一个连接对象 $db = new MySQLi("localhost","root",&qu ...