【洛谷 1218】[USACO1.5]特殊的質數肋骨 Superprime Rib

題目描述

農民約翰的母牛總是產生最好的肋骨。你能通過農民約翰和美國農業部標記在每根肋骨上的數字認出它們。農民約翰確定他賣給買方的是真正的質數肋骨,是因爲從右邊開始切下肋骨,每次還剩下的肋骨上的數字都組成一個質數,舉例來說: 7 3 3 1 全部肋骨上的數字 7331是質數;三根肋骨 733是質數;二根肋骨 73 是質數;當然,最後一根肋骨 7 也是質數。 7331 被叫做長度 4 的特殊質數。寫一個程序對給定的肋骨的數目 N (1<=N<=8),求出所有的特殊質數。數字1不被看作一個質數。

輸入輸出格式
輸入格式:
單獨的一行包含N。

輸出格式:
按順序輸出長度爲 N 的特殊質數,每行一個。

輸入輸出樣例
輸入樣例#1:
4
輸出樣例#1:
2333
2339
2393
2399
2939
3119
3137
3733
3739
3793
3797
5939
7193
7331
7333
7393
說明

題目翻譯來自NOCOW。

USACO Training Section 1.5

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=10;
int a[maxn];
int n;
bool pd(int x)
{
    if(x==0||x==1) return 0;
    for(int i=2;i<=sqrt(x);i++)
    if(x%i==0) return 0;
    return 1;//是質數 
}
void dfs(int k,int ans)
{
    if(k==n)
    {
        if(pd(ans))
        {
            printf("%d",ans);
            puts("");
        }
    }
    for(int i=0;i<=9;i++)
    {
        if(pd(ans*10+i)) 
        dfs(k+1,ans*10+i);
    }
    return;
}
int main()
{
    scanf("%d",&n);
    dfs(0,0);
    return 0;
}
發佈了150 篇原創文章 · 獲贊 6 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章