• poj Antiprime Sequences


    Anti-prime Sequences
    Time Limit: 3000MS   Memory Limit: 30000K
    Total Submissions: 2175   Accepted: 1022

    Description

    Given a sequence of consecutive integers n,n+1,n+2,...,m, an anti-prime sequence is a rearrangement of these integers so that each adjacent pair of integers sums to a composite (non-prime) number. For example, if n = 1 and m = 10, one such anti-prime sequence is 1,3,5,4,2,6,9,7,8,10. This is also the lexicographically first such sequence. 

    We can extend the definition by defining a degree danti-prime sequence as one where all consecutive subsequences of length 2,3,...,d sum to a composite number. The sequence above is a degree 2 anti-prime sequence, but not a degree 3, since the subsequence 5, 4, 2 sums to 11. The lexicographically .rst degree 3 anti-prime sequence for these numbers is 1,3,5,4,6,2,10,8,7,9. 

    Input

    Input will consist of multiple input sets. Each set will consist of three integers, n, m, and d on a single line. The values of n, m and d will satisfy 1 <= n < m <= 1000, and 2 <= d <= 10. The line 0 0 0 will indicate end of input and should not be processed.

    Output

    For each input set, output a single line consisting of a comma-separated list of integers forming a degree danti-prime sequence (do not insert any spaces and do not split the output over multiple lines). In the case where more than one anti-prime sequence exists, print the lexicographically first one (i.e., output the one with the lowest first value; in case of a tie, the lowest second value, etc.). In the case where no anti-prime sequence exists, output 

    No anti-prime sequence exists. 

    Sample Input

    1 10 2
    1 10 3
    1 10 5
    40 60 7
    0 0 0
    

    Sample Output

    1,3,5,4,2,6,9,7,8,10
    1,3,5,4,6,2,10,8,7,9
    No anti-prime sequence exists.
    40,41,43,42,44,46,45,47,48,50,55,53,52,60,56,49,51,59,58,57,54


    题意:求n到m的数中任意连续2到d的数的和是合数

    DFS
    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    
    const int MAXN=10001;
    int n,m,d;
    int vis[MAXN];
    int num[MAXN];
    int pri[MAXN];
    int ans;
    int flag;
    
    void init ()
    {
        memset(pri,0,sizeof(pri));
        pri[0] = pri[1] = 1;
        for ( int i = 2; i <= 100; i++ )
        {
            if ( pri[i] ) continue;
            for ( int j = 2; i * j < 10001; j++ )//这里错了
                pri[i*j] = 1;
        }
    }
    
    
    bool judge(int t,int step)
    {
        num[step]=t;
        if(step>0)
        {
            ans=0;
            int judge=0;
            for(int j=step; j>=step-d+1; j--)
            {
                ans+=num[j];
                if(judge==1 && pri[ans]==0)
                {
                    return false;
                }
                judge=1;
                if(j==0) break;
            }
        }
        return true;
    }
    
    void DFS(int step)
    {
        int ans,i,t;
        if(flag) return ;
        if(step==m-n+1)//已经找到了
        {
            flag=1 ;
            return ;
        }
        for(i=n; i<=m; i++)
        {
            t=0;
            if(flag) return ;
            if(!vis[i] && judge(i,step))
            {
                vis[i]=1;
                DFS(step+1);
                vis[i]=0;
            }
        }
    }
    
    int main()
    {
        int i,j;
        init();
        while(scanf("%d%d%d",&n,&m,&d))
        {
            flag=0;
            if(n==0 && m==0 && d==0)  break;
            memset(vis,0,sizeof(vis));
            DFS(0);
            if(!flag) printf("No anti-prime sequence exists.");
            else
            {
                for(i=0; i<=m-n; i++)
                    if(i==0) printf("%d",num[i]);
                    else printf(",%d",num[i]);
            }
            printf("\n");
        }
        return 0;
    }
  • 相关阅读:
    参数传递二维数组 .
    类的static成员变量和成员函数能被继承吗
    Oracle面试题(基础篇)
    Visual C++ 8.0对象布局
    C++对象模型 多重继承与虚函数表
    浅析GCC下C++多重继承 & 虚拟继承的对象内存布局
    C++对象内存布局测试总结
    查找
    反转链表
    排序
  • 原文地址:https://www.cnblogs.com/zsboy/p/2652321.html
Copyright © 2020-2023  润新知