nyist-ACM17新生国庆集训Round#2题解

比赛链接:
http://oj.nyist.me/JudgeOnline/contest.php?cid=1018

弱校新生题解,大佬速速退去~


A. 三个数从小到大排序

看代码就可以了

#include
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if(aint t;
        t=a;
        a=b;
        b=t;
    }
    if(aint t;
        t=a;
        a=c;
        c=t;
    }
    if(bint t;
        t=b;
        b=c;
        c=t;
    }
    printf("%d %d %d\n",c,b,a);
    return 0;
}

B. 水仙花数

#include
int main()
{
    int s;
    while(scanf("%d",&s)!=EOF)
    {
        int q=s;
        if(s==0)
            return 0;
        int a,b,c;
        a=s%10;
        s/=10;
        b=s%10;
        s/=10;
        if(a*a*a+b*b*b+s*s*s==q)
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}

C. ASCII码排序

在输入的时候,回车键也会算一个字符,所以要用到getchar()

#include
int main()
{
    int t;
    scanf("%d",&t);
    getchar();
    while(t--)
    {
        char a,b,c;
        scanf("%c%c%c",&a,&b,&c);
        getchar();
        if(achar t;
            t=a;
            a=b;
            b=t;
        }
        if(achar t;
            t=a;
            a=c;
            c=t;
        }
        if(bchar t;
            t=b;
            b=c;
            c=t;
        }
        printf("%c %c %c\n",c,b,a);
    }
    return 0;
}

D. 5个数求最值

没有学排序之前,可以用下面的方法做,等到学了排序之后,可以用排序再做一次

#include
int main()
{
    int a,b,c,d,e;
    scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
    int maxx,minn;
    if(a>b)
    {
        maxx=a;
        minn=b;
    }
    else
    {
        maxx=b;
        minn=a;
    }
    if(maxxif(maxxif(maxxif(minn>c)
    {
        minn=c;
    }
    if(minn>d)
    {
        minn=d;
    }
    if(minn>e)
    {
        minn=e;
    }
    printf("%d %d\n",minn,maxx);
    return 0;
}

E. 韩信点兵

考察对取余的理解

#include
#include
int main()
{
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    int flag=0;
    for(int i=10; i<=100; i++)
    {
        if(i%3==a&&i%5==b&&i%7==c)
        {
            flag=1;
            printf("%d\n",i);
            break;
        }
    }
    if(!flag)
        printf("No answer\n");
    return 0;
}

F. 另一种阶乘问题

请明确一下题目定义的阶乘的概念

#include
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        int sum=0;
        for(int i=1; i<=n; i++)
        {
            int q=1;
            for(int j=1; j<=i; j++)
            {
                if(j%2==1)
                    q*=j;
            }
            sum+=q;
        }
        printf("%d\n",sum);
    }
    return 0;
}

G. 素数

做了这个题,就清明确一下什么叫做外部函数,外部函数怎么定义,它的返回值是什么

#include
#include
int judge(int n)
{
    for(int i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)
            return 0;
    }
    return 1;
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        if(n==1)
        {
            printf("2\n");
            continue;
        }
        if(judge(n))
        {
            printf("%d\n",n);
        }
        else
        {
            int l=-10000,r=10000;
            for(int i=n-1;i>=2;i--)
            {
                if(judge(i))
                {
                    l=i;
                    break;
                }
            }
            for(int j=n+1;j<=1000;j++)
            {
                if(judge(j))
                {
                    r=j;
                    break;
                }
            }
            if(n-l>=r-n)
            {
                printf("%d\n",r);
            }
            else
            {
                printf("%d\n",l);
            }
        }
    }
    return 0;
}

H. ACM之路

这就不用我说了吧,考察一下ACM基本输入格式,t组输入

#include
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        printf("I Love Acm.\n");
    }
    return 0;
}

你可能感兴趣的:(【比赛补题/比赛代码】)