posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          USACO 1.1.5 Prime Palindromes

          Posted on 2007-06-01 21:28 ZelluX 閱讀(465) 評論(0)  編輯  收藏 所屬分類: Algorithm
          Packing Rectangles先cheat了,下星期再回來做。

          先用篩法做了一張hash表,記錄是否為素數(shù),然后找各個素數(shù)判斷是否為回文數(shù),超內存了。。。
          于是改為生成回文數(shù)后判斷是否為素數(shù),過了。
          貌似現(xiàn)在寫這種程序的速度比高中快不少了,到底是什么進步了呢?
          /*
          PROG: pprime
          ID: 060301031
          LANG: C++
          */


          #include 
          <iostream>
          #include 
          <fstream>
          #include 
          <bitset>
          #include 
          <cmath>

          using namespace std;

          bool isPrime(const long num) {
              
          int i;
              
          for (i = 2; i <= sqrt(num); i++{
                  
          if (num % i == 0{
                      
          return false;
                  }

              }

              
          return true;
          }


          int main() {
              ifstream fin(
          "pprime.in");
              ofstream fout(
          "pprime.out");
              
          long from, to;
              
          long i = 0, j;
              fin 
          >> from >> to;
              
              
          long beginNum = 1;
              
          while (true{
                  
          int number;
                  i
          ++;  // i indicates the digits of palindromes to be generated
                  for (j = beginNum; j < beginNum * 10; j++{
                      
          long num1 = j, num2 = 0, temp = j;
                      
          if (i % 2 == 1{
                          temp 
          /= 10;
                      }

                      
          while (temp > 0{
                          num1 
          *= 10;
                          num2 
          = num2 * 10 + (temp % 10);
                          temp 
          /= 10;
                      }

                      number 
          = num1 + num2;
                      
          if (number > to) {
                          
          break;
                      }

                      
          if (number < from) {
                          
          continue;
                      }

                      
          if (isPrime(number)) {
                          fout 
          << number << endl;
                      }

                  }

                  
          if (number > to) {
                      
          break;
                  }

                  
          if (i % 2 == 0{
                      beginNum 
          *= 10;
                  }

              }

              
          return 0;
          }
          主站蜘蛛池模板: 朝阳县| 阿鲁科尔沁旗| 铜山县| 南华县| 楚雄市| 华宁县| 浦城县| 屏边| 团风县| 平泉县| 会宁县| 武功县| 桦甸市| 治县。| 喀什市| 平泉县| 台州市| 红安县| 济宁市| 大埔县| 威信县| 高陵县| 镇坪县| 波密县| 西丰县| 于田县| 惠来县| 太湖县| 沧源| 珠海市| 涞水县| 珲春市| 平安县| 玛纳斯县| 若尔盖县| 沂水县| 霍城县| 元朗区| 营口市| 平和县| 夏邑县|