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
  • 相关阅读:
    Android学习系列(34)App应用之发布各广告平台版本
    Android拓展系列(6)CM9源码下载和编译
    Android拓展系列(8)Vim插件便捷管理(使用git submodule和pathogen)
    [Android应用]《幽默笑话》V1.0 Beta 版本发布!
    [Android应用]《养生视线》V2.1 正式版本粉墨登场!
    Android设计模式系列(9)SDK源码之适配器模式
    企业定制软件开发的两个核心问题
    持续部署才是王道
    组织模式 Introduction
    高性能计算摘要
  • 原文地址:https://www.cnblogs.com/zyxStar/p/4584327.html
Copyright © 2011-2022 走看看