首页 > 代码库 > 2013年江西理工大学C语言程序设计竞赛(初级组)

2013年江西理工大学C语言程序设计竞赛(初级组)

ACM ICPC WORLD FINAL

解法:排序大家都知道,去重的话,初学者用数组就好了

#include<algorithm>
#include<iostream>
using namespace std;
int main()
{
    int a,b,c[100],i,d[31];
    cin>>a;
    while(a>0)
    {
        cin>>b;
        for(i=0;i<31;i++)
            d[i]=0;
        for(i=0;i<b;i++)
        {
            cin>>c[i];
        }
         for(i=0;i<b;i++)
         {
             d[c[i]]++;
         }
         for(i=0;i<31;i++)
         {
             if(d[i]!=0)
                cout<<i<<" ";
         }
         cout<<endl;
         a--;
    }
} 

解法:找规律,前面的n行都是在中间输出*,第n+1行全部输出*,接下来的以中间为对称关系,往两边扩展

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    while(cin>>n&&n)
    {
        for(int i=1;i<=2*n+1;i++)
        {
            for(int j=1;j<=2*n+1;j++)
            {
                if(j==n+1)
                {
                    cout<<"*";
                }
                else if(i==n+1)
                {
                    cout<<"*";
                }
                else if(i>n+1)
                {
                    int pos=i-(n+1);
                    //cout<<pos<<endl;
                    if(n+1-pos==j||n+1+pos==j)
                    {
                        cout<<"*";
                    }
                    else
                    {
                        cout<<".";
                    }
                }
                else
                {
                    cout<<".";
                }
            }
            cout<<endl;
        }
    }
    return 0;
}

我们都是江理人

解法:字符串处理(根据题意)

#include<stdio.h>
int main()
{
    int n,t,i;
    char a[1000];
    scanf("%d",&n);
    getchar();
    while(n--)
    {
        i=0;
              gets(a);
        for(t=0;a[t]!=‘\0‘;t++)
        {
            if(a[t]==‘1‘) 
            printf("love jiangli\n");
            if(a[t]==‘2‘)
            printf("love xingong\n");
        }
    }
    return 0;
}

回文素数

解法:数据不大,当然是先判断是不是回文再判断素数,(这里可以把数字一位一位分解倒着相加看是否相等)

 

#include<stdio.h> 
int main() 
{ 
    int m,n,c,b,k,p,q,r; 
    while(scanf("%d%d",&m,&n)!=EOF) 
    { 
        if(m==0&&n==0) 
            break; 
        r=0; 
        for(k=m; k>=m&&k<=n; k++) 
        { 
            b=0; 
            p=k; 
            while(k>0) 
            { 
                c=k%10; 
                b=b*10+c; 
                k=k/10; 
            } 
            if(b==p) 
            { 
                for(q=2; q<p; q++) 
                    if(p%q==0) 
                        break; 
                if(q==p) 
                { 
                    r=r+1; 
                } 
            } 
            k=p; 
        } 
        printf("%d\n",r); 
    } 
} 
 

 兽兽扔铅球

解法:数学题,没什么好说的

#include <stdio.h>
#include<math.h>
int main()
{
    int n;
    float h,a,l;
    while(scanf("%d",&n)!=EOF)
    {
        while(n--)
        {
            scanf("%f%f",&h,&a);
            l=h/tan(a);
            printf("%.3f\n",l);
        }
    }
    return 0;
}  

魔兽争霸

解法:应该是计算斜率了(y2-y1)*(x3-x1)==(y3-y1)*(x2-x1)

#include<stdio.h>
int main()
{
    double x1,x2,x3,y1,y2,y3;
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=0;i<n;i++)
        {
            scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
            if((y2-y1)*(x3-x1)==(y3-y1)*(x2-x1)&&(x2-x1)*(x2-x1)>=(x3-x1)*(x3-x1)&&(y2-y1)*(y2-y1)>=(y3-y1)*(y3-y1))
            printf("yes\n");
            else printf("no\n");
        }
    }
    return 0;
}

  

2013年江西理工大学C语言程序设计竞赛(初级组)