zoukankan      html  css  js  c++  java
  • [Swust OJ 610]--吉祥数

    题目链接:http://acm.swust.edu.cn/problem/610/

    Time limit(ms): 1000      Memory limit(kb): 65535
     
    Description
    马上就是新年了,在这里提前祝大家新年快乐,首先送大家一个吉祥数——1898。相信意思大家都明白吧,接着就请大家根据下面的提示来找出一些和我们这个吉祥数相关的一些数吧。 
    请将不大于2008的所有素数从小到大排成第一行,第二行上的每个数都等于它头上的素数与它右肩上的素数之差。编程求出:第二行数中是否存在这样的若干个连续的整数,它们的和恰好是1898?假好存在的话,又有几种这样的情况?例如: 
    第一行:2 3 5 7 11 13 17......1979 1987 1993 
    第二行:1 2 2 4 2 4...... 8 6 
     
    Input
    没有输入
     
    Output
    输出有多个结果,输出所有满足条件的结果,要求只输出每个结果对应第1行数的起始数和终止数,两个数间空两格,每个结果间换行,所有的结果按起始数从大到小的顺序输出,具体见Sample
     
     
    Sample Input
    无输入

    Sample Output
    101 1999
    89 1987
    ……
    ……
    ……

     
    解题思路:(1)假设第一行中的素数为n[1]、n[2]、n[3]....n、...第二行中的差值为m[1]、m[2]、m[3]...m[j]...。其中m[j]为:m[j]=n[j+1]-n[j]。
         (2)则第二行连续N个数的和为:
            SUM=m[1]+m[2]+m[3]+...+m[j]
                =(n[2]-n[1])+(n[3]-n[2])+(n[4]-n[3])+...+(n[j+1]-n[j])
                =n[j+1]-n[1]
      由此题目就变成了:在不超过2008的所有素数中是否存在这样两个素数,它们的差恰好是1898。若存在,则第二行中必有所需整数序列,其和恰为1898,。
        对等价问题的求解是比较简单的。
        由分析可知,在素数序列中不必包含2,因为任意素数与2的差一定为奇数,所以不必考虑。(同样素数由素数表打表得到)
     
    代码如下:
     
     1 #include <iostream>
     2 #include <cstring>
     3 using namespace std;
     4 int ptr[520], prime[2015] = { 0, 0, 1 };
     5 void init(){
     6     int i, j;
     7     memset(prime, 1, sizeof(prime));
     8     for (i = 2; i <= 2008; i++){
     9         if (prime[i]){
    10             for (j = 2; i*j <= 2008; j++)
    11                 prime[i*j] = 0;
    12         }
    13     }
    14 }
    15 int main(){
    16     int i, j;
    17     init();
    18     for (j = 0, i = 3; i <= 2008; i += 2)
    19     if (prime[i])
    20         ptr[j++] = i;
    21     for (j--; ptr[j] > 1898; j--){
    22         for (i = 0; ptr[j] - ptr[i] > 1898; i++);
    23         if (ptr[j] - ptr[i] == 1898)
    24             cout << ptr[i] << "  " << ptr[j] << endl;
    25     }
    26     return 0;
    27 }
    View Code
  • 相关阅读:
    php中常见的大坑,开发中应尽量避免
    ElasticSearch快速入门【建议收藏】
    OWASP Secure Headers Project
    专科是文科,是否可以报考理科的本科
    一网通办 下载发票
    “次幂”和“次方”有什么区别?
    详讲口诀“奇变偶不变,符号看象限”
    成考数学知识点 高起专
    如何下载腾讯课堂的视频
    JDK发布版本的总结
  • 原文地址:https://www.cnblogs.com/zyxStar/p/4584327.html
Copyright © 2011-2022 走看看