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

来源:互联网 发布:复杂网络同步现象 编辑:程序博客网 时间:2024/06/01 12:58

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

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


A. 三个数从小到大排序

看代码就可以了

#include<stdio.h>int main(){    int a,b,c;    scanf("%d%d%d",&a,&b,&c);    if(a<b)    {        int t;        t=a;        a=b;        b=t;    }    if(a<c)    {        int t;        t=a;        a=c;        c=t;    }    if(b<c)    {        int t;        t=b;        b=c;        c=t;    }    printf("%d %d %d\n",c,b,a);    return 0;}

B. 水仙花数

#include<stdio.h>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<stdio.h>int main(){    int t;    scanf("%d",&t);    getchar();    while(t--)    {        char a,b,c;        scanf("%c%c%c",&a,&b,&c);        getchar();        if(a<b)        {            char t;            t=a;            a=b;            b=t;        }        if(a<c)        {            char t;            t=a;            a=c;            c=t;        }        if(b<c)        {            char t;            t=b;            b=c;            c=t;        }        printf("%c %c %c\n",c,b,a);    }    return 0;}

D. 5个数求最值

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

#include<stdio.h>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(maxx<c)    {        maxx=c;    }    if(maxx<d)    {        maxx=d;    }    if(maxx<e)    {        maxx=e;    }    if(minn>c)    {        minn=c;    }    if(minn>d)    {        minn=d;    }    if(minn>e)    {        minn=e;    }    printf("%d %d\n",minn,maxx);    return 0;}

E. 韩信点兵

考察对取余的理解

#include<stdio.h>#include<math.h>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<stdio.h>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<stdio.h>#include<math.h>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<stdio.h>int main(){    int t;    scanf("%d",&t);    while(t--)    {        printf("I Love Acm.\n");    }    return 0;}