• POJ3292Semiprime Hnumbers


    转载请注明出处:優YoU   http://user.qzone.qq.com/289065406/blog/1309336489

     

    大致题意:

    一个H-number是所有的模四余一的数。

    如果一个H-numberH-primes 当且仅当它的因数只有1和它本身(除1外)。

    一个H-numberH-semi-prime当且仅当它只由两个H-primes的乘积表示。

    H-number剩下其他的数均为H-composite

    给你一个数h,1h有多少个H-semi-prime数。

     

    解题思路:

    感觉跟同余模扯不上关系。。。

    筛法打表,再直接输出。。。水题。。。

     1 //Memory Time 
    2 //4172K 63MS
    3
    4 #include<iostream>
    5 using namespace std;
    6
    7 const int size=1000001;
    8
    9 int H_Number[size+1];
    10
    11 /*筛法打表*/
    12 void Table(void)
    13 {
    14 memset(H_Number,0,sizeof(H_Number)); //H_Number[i]=0 表示 i为H-prime
    15
    16 for(int i=5;i<=size;i+=4)
    17 {
    18 for(int j=5;j<=size;j+=4)
    19 {
    20 int multiply=i*j;
    21 if(multiply>size)
    22 break;
    23
    24 if(H_Number[i]==0 && H_Number[j]==0) //i与j均为H-prime
    25 H_Number[multiply]=1; //multiply为H-semi-primes
    26 else
    27 H_Number[multiply]=-1; //multiply为H-composite
    28 }
    29 }
    30
    31 int Pcount=0; //H-prime计数器
    32 for(int k=1;k<=size;k++)
    33 {
    34 if(H_Number[k]==1)
    35 Pcount++;
    36 H_Number[k]=Pcount; //从1到k有Pcount个H-semi-primes
    37 }
    38 return;
    39 }
    40
    41 int main(void)
    42 {
    43 Table();
    44 int h;
    45 while(cin>>h && h)
    46 cout<<h<<' '<<H_Number[h]<<endl;
    47
    48 return 0;
    49 }
  • 相关阅读:
    为什么项目经理非常难有节操的选举
    二叉查找树的删除操作
    二叉查找树的前驱后继
    替罪羊树
    树链剖分
    DFS序
    bzoj3224: Tyvj 1728 普通平衡树(平衡树)
    splay树入门(带3个例题)
    红黑树
    AVL树
  • 原文地址:https://www.cnblogs.com/lyy289065406/p/2122789.html
Copyright © 2020-2023  润新知