天天看點

poj1316(篩選法模拟)

x的增量序列中所有的數都不是自數,從篩子中篩去即可

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<queue>
#include<ctype.h>
#include<stack>
#include<math.h>
#include <string>
#include<algorithm>
#include <iterator>

using namespace std;

typedef unsigned long long ULL;

int g[];

int mysum(int n)
{
    int sum=;
    if(n<)
        return n;
    while(n)
    {
        sum+=n%;
        n/=;
    }
    return sum;
}

void fun(int n)
{
    if(n>)
        return ;
    int next;
    next=n+mysum(n);
    if(next<&&g[next]==next)
        g[next]=n;
    fun(next);
    return;
}

int main()
{
    for(int i=;i<;i++)
        g[i]=i;
    for(int i=;i<;i++)
        fun(i);
    for(int i=;i<;i++)
        if(g[i]==i)
            printf("%d\n",i);
    return ;
}


           
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<queue>
#include<ctype.h>
#include<stack>
#include<math.h>
#include <string>
#include<algorithm>
#include <iterator>

using namespace std;

typedef unsigned long long ULL;

int book[];

int mysum(int n)
{
    int sum=;
    if(n<)
        return n;
    while(n)
    {
        sum+=n%;
        n/=;
    }
    return sum;
}

void fun(int n)
{
    if(n>)
        return;
    int next=n+mysum(n);
    if(next<&&book[next]==)
        book[next]=;
    fun(next);
}

int main()
{
    for(int i=;i<;i++)
        fun(i);
    for(int i=;i<;i++)
        if(book[i]==)
            printf("%d\n",i);
    return ;
}