• 江西理工大学南昌校区acm选拔赛题解


    第一题略

    第二题

    #include<stdio.h>
    int main()
    {
        int a1,a2,a3,b1,b3,b2,c1,c2,c3,n,sum,d1,d2,d3,i;
        scanf("%d
    ",&n);
        for(i=0;i<n;i++)
        {
            scanf("%d%d%d%d%d%d",&a1,&a2,&a3,&b1,&b2,&b3);
            c1=(a1+b1)*60*60;
            c2=(a2+b2)*60;
            c3=(a3+b3);
            sum=c1+c2+c3;
            d1=sum/3600;
            d2=(sum-d1*60*60)/60;
            d3=sum%60;
            printf("%d %d %d
    ",d1,d2,d3);
        }
    }

    第三题题解

    #include<stdio.h>
    int main()
    {
        int a,b,n;
        while(scanf("%d%d",&a,&b)!=EOF&&(a||b))
        {
            int n=a;
            while(b>0&&a>=b)
            {
                n+=a/b;
                a=a/b+a%b;
            }
            printf("%d
    ",n);
        }
    } 

    第四题题解

    #include<stdio.h>
    #include<math.h>
    char a[100], b[100];
    int main(){
        int number;
        int c = 0;
            while(scanf("%d", &number)!=EOF)
    {
            scanf("%s%s", a, b);
            for (int i = 0; i < number; ++i){
                int tmp = fabs(a[i] - b[i]);
                if (tmp > 5)
                    c += (10 - tmp);
                else
                    c += tmp;
            }
            printf("%d
    ", c);
            c = 0;
        }
        return 0;
    }

    第五题题解

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    char a[165];
    int main() {
        int T; 
        while(cin >> T)
    {
        while(T--) {
            cin >> a;
            int len = strlen(a);
            int flag = false;
            int last = 0;
            int sum = 0;
            for(int i = 0; i < len; i++) {
                if(a[i] == 'A' || a[i] == 'a') {
                    flag = true;
                    last++;
                    sum += last;
                }
                else {
                    flag = false;
                    last = 0;
                }
            }
            cout << sum << endl;
        }
    }
        return 0; 
    } 

    第七题题解

    #include<stdio.h>
    int main()
    {
        double a[10000];
        int i,b;
        a[0]=0;
        a[1]=1;
        a[2]=2;
        for(i=3;i<1000;i++)
            {
                a[i]=a[i-1]+a[i-2];
            }
        while(scanf("%d",&b)!=EOF)
        {
            printf("%.lf
    ",a[b]);    
        }
    } 

    第八题题解

    #include<stdio.h>
    #include<math.h>
    int sushu(int n)
    {
        int i;
        for(i=2;i<=sqrt(n);i++)
        if(n%i==0)
        return 0;
        return 1;
    }
    int main()
    {
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            for(;;n--)
            if(sushu(n))
            break;
            printf("%d
    ",n);
        }    
    } 

    新生赛第九题

    #include<stdio.h>
    int main()
    {
    int i,a,max=0,min=100,s;
    char l[100]={0},op;
    gets(l);
    {
        for(i=0;;i=i+2)
    {
    if(l[i]=='=')
    break;
    else 
    {if(l[i]==43||l[i]==45||l[i]==42||l[i]==37||l[i]==47)
    op=l[i];
    else 
    {
    if(l[i+2]==44)
    {a=(l[i]-48)*10+l[i+1]-48;i++;}
    else 
    a=l[i]-48;
    if(a>=max)
    {max=a;}
    if(a<=min)
    {min=a;}
    }
    }
    }
    switch(op)
    {case 43:s=max+min;
    printf("%d+%d=%d
    ",max,min,s);
    break;
    case 45:s=max-min;
    printf("%d-%d=%d
    ",max,min,s);
    break;
    case 42:s=max*min;printf("%d*%d=%d
    ",max,min,s);
    break;
    case 37:{if(min==0)
    {printf("Error!
    ");
    break;}
    else
    {s=max%min;
    printf("%d%%%d=%d
    ",max,min,s);
    break;}}
    case 47:{if(min==0)
    {
    printf("Error!
    ");
    break;}else{s=max/min;
    printf("%d/%d=%d
    ",max,min,s);
    break;}}}
    }
    }

    新生赛第十题

    #include<stdio.h>
    char str[1010];
    int a[100000];
    void qsort(int a[],int l,int r)
    {
        int x=a[l],i=l,j=r;
        if(l>=r) return;
        while(i<j)
        {
            while(i<j&&a[j]>=x)j--;
            a[i]=a[j];
            while(i<j&&a[i]<=x)i++;
            a[j]=a[i];
        }
        a[i]=x;
        qsort(a,l,i-1);
        qsort(a,i+1,r);
    }
    int main()
    {
        int k,i,sum;
        while(~scanf("%s",str))
        {
            k=0;i=0;
            while(str[i]!='')
            {
                sum=0;
                if(str[i]=='6')
                {
                    i++;
                    continue;
                }
                while(str[i]!='6'&&str[i]!='')
                {
                    sum=sum*10+str[i]-'0';
                    i++;
                }
                a[k]=sum;
                k++;
            }
            qsort(a,0,k-1);
            for(i=0;i<k-1;i++)
            {
                printf("%d ",a[i]);
            }
            printf("%d
    ",a[i]);
        }
        return 0;
    }

    新生赛第十一题

    #include<stdio.h>
    int main()
    {
        int n,m,i,j,a[100][100],s,t,q,sum;double b[6],c[51];
        while(scanf("%d %d",&n,&m)!=EOF&&n&&m)
        {
            sum=0;q=0;b[5]=0;c[50]=0;
            for(i=0;i<n;i++)//学生数 n 
            {
                for(j=0;j<m;j++)//科目 m
                {
                    scanf("%d",&a[i][j]);
                }
            }
            for(i=0;i<n;i++)
            {
                for(j=0;j<m;j++) 
                {
                    t+=a[i][j];
                };c[i]=t;t=0;//某学生m科目总分
            }
            for(i=0;i<n-1;i++)
            {
                printf("%.2lf ",c[i]/m);
            }
            printf("%.2lf",c[n-1]/m);
            printf("
    ");
            for(j=0;j<m;j++)
            {
                for(i=0;i<n;i++)
                {
                    s+=a[i][j];
                };b[j]=s;s=0;//某科目n学生总分 
            }
            
            for(j=0;j<m-1;j++)
            {
                printf("%.2lf ",b[j]/n);
            }
            printf("%.2lf",b[m-1]/n);
            printf("
    ");
            for(i=0;i<n;i++)
            {
                for(j=0;j<m;j++) 
                {
                    if(a[i][j]>=(b[j]/n)) q++;
                };if(q==m) sum++;q=0;
            }printf("%d
    
    ",sum);
        }return 0;
    }

    新生赛第十二题

    #include<iostream>
    #include<cstring>
    #define maxn 100
    using namespace std;
    int n,m,sum;
    char mapp[maxn][maxn];
    int visit[maxn][maxn];
    int dir[8][2]={{0,1},{0,-1},{1,0},{-1,0},{1,1},{-1,1},{1,-1},{-1,-1}};
    void input()
    {
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                cin>>mapp[i][j]; 
            }
        }
    }
    void dfs(int x,int y)
    {
        visit[x][y]=1;
        for(int i=0;i<8;i++)
        {
            int xx=x+dir[i][0];
            int yy=y+dir[i][1];
            if(xx<0||xx>=n||y<0||yy>=m||visit[xx][yy]||mapp[xx][yy]=='*') continue;
            dfs(xx,yy);
        }
    }
    int main()
    {
        while(cin>>n>>m)
        {
            if(!n&&!m) break;
            input();
            sum=0;
            memset(visit,0,sizeof(visit));
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<m;j++)
                {
                    if(mapp[i][j]=='@'&&!visit[i][j])
                    {
                        sum++;
                        dfs(i,j);
                    }
                }
            }
            cout<<sum<<endl;
        }
        return 0;
    }
  • 相关阅读:
    C# 温故而知新:Stream篇(—)
    C# 温故而知新:Stream篇(三)
    Unity教程之Unity Attribute的使用总结
    鹅厂分享会丨面向Unity程序员的Android快速上手教程
    【Unity】编辑器小教程
    浅析Unity 坐标系
    C# 温故而知新:Stream篇(五)
    C# 温故而知新:Stream篇(二)
    unity 协程原理与线程的区别
    简单获取2月天数
  • 原文地址:https://www.cnblogs.com/wangmenghan/p/5374267.html
Copyright © 2020-2023  润新知