YTU 2887: D--机器人Bill

来源:互联网 发布:json字符串base64加密 编辑:程序博客网 时间:2024/05/22 17:45

Description

最近,Dr. Jiang 新设计一个机器人Bill。Bill很聪明,会做许多事情。唯独对质数的理解与人类不一样,它是从右往左读数。比如,它看到113时,会理解成311。让它比较23与19哪一个大,它说19大。原因是它的大脑会以为是32与91在进行比较。再比如,让它比较29与31,它说29大。

给Bill 两个自然数A和B,让它将 [A,B] 区间中的所有质数按从小到大排序出来。你会认为它如何排序?

Input

第一行:N 表示有多少组测试数据。 (2<=N<=5 )
接下来有 N 行,每一行有两个正整数 A,B 表示待排序元素的区间端点。(1<=A<=B<=200000, B-A<=100)

Output

对于每一行测试数据,输出一行,为所有排好序的元素,元素之间有一个空格。

Sample Input

28 1518 39

Sample Output

11 1331 23 37 19 29

HINT

Source

LDF

ac代码:
#include <iostream>#include <cstring>using namespace std;int fun1(int a,int b){    int i=0,j=0,a1,b2;    a1=a;b2=b;    if(a==b)return 1;    while(a1){        a1/=10;        i++;    }    while(b2){        b2/=10;        j++;    }    if(i>j) return 1;    if(i<j) return 0;    while(a){        if(a%10==b%10){        a/=10;        b/=10;        } else if(a%10>b%10){return 1;}        else return 0;    }    return 0;}int p(int a){    if(a<=1&&a>0)return 0;    int i=2;    while(i<a){        if(a%i++==0)            return 0;    }    return 1;}int fun(int a,int b){    int i=a,count=0,t,j,k;    int my[100];    for(i=a;i<=b;i++){        if(p(i)==1)            my[count++]=i;    }    t=count;    for(i=0;i<t;i++){        for(j=0;j<t-1-i;j++){            if(fun1(my[j],my[j+1])){                k=my[j];                my[j]=my[j+1];                my[j+1]=k;            }        }    }    i=0;    while(i<count-1)cout<<my[i++]<<' ';    cout<<my[i]<<'\12';}int main(){    int n;    cin>>n;    int a,b;    while(n){        cin>>a>>b;    fun(a,b);        n--;    }    return 0;} 
 运行结果:



0 0
原创粉丝点击