开始看第一眼题就觉得问题会在超时上,果然写了个小代码运行到test 9时超时了

#include <stdio.h>
#include <math.h> int isprime(int M)
{
int i;
float N = M;
for(i = ; i <= sqrt(N); i++)
{
if(M % i == )
return ;
}
return ;
} int ispalindromes(int N)
{
char numc[] = {};
int l;
char *p, *q;
for(l = ; N != ; l++)
{
numc[l] = N % + '';
N = N / ;
}
l--;
for(p = numc, q = numc + l; p < q; p++, q--)
{
if(*p != *q)
return ;
}
return ;
} int main()
{
FILE *in, *out;
in = fopen("pprime.in", "r");
out = fopen("pprime.out", "w"); int a, b;
fscanf(in, "%d %d", &a, &b); int i, j;
for(i = a; i <= b; i++)
{
if(ispalindromes(i) && isprime(i))
{
fprintf(out, "%d\n", i);
}
} return ;
}

----------------------------------------------

化简途径是直接生成回文 我的代码边界处理的有点乱 不过AC了 确实速度比一个个判断快很多 大概快个100倍吧

每次回文生成的前半段都是 10 — 99  100 - 999 1000 - 9999 这样的情况,要分奇偶数处理

#include <stdio.h>
#include <math.h> int isprime(int M)
{
int i;
float N = M;
for(i = ; i <= sqrt(N); i++)
{
if(M % i == )
return ;
}
return ;
}
int main()
{
FILE *in, *out;
in = fopen("pprime.in", "r");
out = fopen("pprime.out", "w"); int a, b;
int i, j, k;
int l, s;
int bb, aa;
fscanf(in, "%d %d", &a, &b); bb = b;
aa = a; for(l = ; bb != ; l++)
{
bb = bb / ;
}
for(s = ; aa != ; s++)
{
aa = aa / ;
}
for(i = s; i <= l; i++)
{
int small, large; //回文产生中,不重复部分最大最小值 int ll = i/ + i % ; //回文不重复长度
if(i == s) //最小边界
{
small = a;
for(j = ; j < i - ll; j++)
{
small = small / ;
}
}
else
{
for(small = , j = ; j < ll; j++)
{
small = small * ;
}
}
for(large = , j = ; j <= ll; j++)
{
large = large * ;
}
large--; for(j = small; j <= large; j++)
{
int lll;
int pal;
int num[] = {};
int jj = j;
for(k = ; jj != ; k++)
{
num[k] = jj % ;
jj = jj / ;
}
lll = k;
pal = j;
if(i % == )
{
for(k = ; k < lll; k++)
{
pal = pal * + num[k];
}
if(pal > b) return ; //不能超过最大值
if(isprime(pal))
{
fprintf(out, "%d\n", pal);
} }
else
{
for(k = ; k < lll; k++)
{
pal = pal * + num[k];
}
if(pal > b) return ;
if(isprime(pal))
{
fprintf(out, "%d\n", pal);
}
}
}
} return ;
}

看了下答案,思路差不多,但是比我的清楚很多。学习到的技巧:

素数判断:

int
isprime(long n)
{
long i; if(n == ) // 2单独处理
return ; if(n% == )
return ; for(i=; i*i <= n; i+=) // i * i <= n 可以避免sqrt
if(n%i == )
return ; return ;
}

atol()函数 可以将字符串转为整数

【USACO】pprime的更多相关文章

  1. POJ 1986 Distance Queries / UESTC 256 Distance Queries / CJOJ 1129 【USACO】距离咨询(最近公共祖先)

    POJ 1986 Distance Queries / UESTC 256 Distance Queries / CJOJ 1129 [USACO]距离咨询(最近公共祖先) Description F ...

  2. 1642: 【USACO】Payback(还债)

    1642: [USACO]Payback(还债) 时间限制: 1 Sec 内存限制: 64 MB 提交: 190 解决: 95 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 &quo ...

  3. 1519: 【USACO】超级书架

    1519: [USACO]超级书架 时间限制: 1 Sec 内存限制: 64 MB 提交: 1735 解决: 891 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 Farmer Jo ...

  4. Java实现【USACO】1.1.2 贪婪的礼物送礼者 Greedy Gift Givers

    [USACO]1.1.2 贪婪的礼物送礼者 Greedy Gift Givers 题目描述 对于一群要互送礼物的朋友,你要确定每个人送出的礼物比收到的多多少(and vice versa for th ...

  5. 【CPLUSOJ】【USACO】【差分约束】排队(layout)

    [题目描述] Robin喜欢将他的奶牛们排成一队.假设他有N头奶牛,编号为1至N.这些奶牛按照编号大小排列,并且由于它们都很想早点吃饭,于是就很可能出现多头奶牛挤在同一位置的情况(也就是说,如果我们认 ...

  6. 【USACO】Dining

    [题目链接] [JZXX]点击打开链接 [caioj]点击打开链接 [算法] 拆点+网络流 [代码] #include<bits/stdc++.h> using namespace std ...

  7. 【USACO】Optimal Milking

    题目链接 :        [POJ]点击打开链接        [caioj]点击打开链接 算法 : 1:跑一遍弗洛伊德,求出点与点之间的最短路径 2:二分答案,二分”最大值最小“ 3.1:建边,将 ...

  8. 【USACO】 Balanced Photo

    [题目链接] 点击打开链接 [算法] 树状数组 [代码] #include<bits/stdc++.h> using namespace std; int i,N,ans,l1,l2; ] ...

  9. 【USACO】 Balanced Lineup

    [题目链接] 点击打开链接 [算法] 这是一道经典的最值查询(RMQ)问题. 我们首先想到线段树.但有没有更快的方法呢?对于这类问题,我们可以用ST表(稀疏表)算法求解. 稀疏表算法.其实也是一种动态 ...

随机推荐

  1. hdu 3068 最长回文子串 TLE

    后缀数组+RMQ是O(nlogn)的,会TLE..... 标准解法好像是马拉车,O(n).... #include "algorithm" #include "cstdi ...

  2. JSP表单处理

    当需要通过从浏览器获取一些信息,在许多情况下,最终给到Web服务器后台程序.浏览器使用两种方法将这些信息传递给Web服务器.这些方法是GET方法和POST方法. GET 方法: GET方法将追加到页面 ...

  3. Spring+Struts2+Mybatis框架搭建时的常见典型问题

    搭建SSM框架时,总是遇到这样那样的问题,有的一眼就能看出来,有的需要经验的积累.现将自己搭建SSM框架时遇到的典型问题总结如下: 一.Struts2框架下的action中无法使用@Autowired ...

  4. 两款CSS3样式可视化在线生成工具

    CSS3随着浏览器的升级已经被越来越广泛的运用,合理的运用CSS3可以使你的网站更加美观,并且之前只能用js才能实现的效果也已经可以直接用 CSS3来实现.但是虽然如此,很多浏览器对CSS3的支持还都 ...

  5. Unity Shader Billboard

    记录来源于ShaderLab开发实战详解 Shader "Tut/Project/Billboard_1" { Properties { _MainTex ("Base ...

  6. Unity Shaders Vertex & Fragment Shader入门

    http://blog.csdn.net/candycat1992/article/details/40212735 三个月以前,在一篇讲卡通风格的Shader的最后,我们说到在Surface Sha ...

  7. android源代码提示文本框还能输入多少个字符

    public class TestAndroidActivity extends Activity { /** Called when the activity is first created. * ...

  8. Visual Studio Online Integrations-Collaboration

                                                                                         原文:http://www.v ...

  9. @suppressWarnings解释

    J2SE 提供的最后一个批注是 @SuppressWarnings.该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默. 一点背景:J2SE 5.0 为 Java 语言增加 ...

  10. 新浪微博客户端(17)-集成MJExtension

    使用MJExtension框架将字典转换为模型 DJHomeViewController.m /** 载入新的微博数据 */ - (void)loadNewStatues { AFHTTPSessio ...