zoukankan      html  css  js  c++  java
  • 青橙OI题库

    A1000 A+B

    问题描述

      输入A,B。
      输出A+B。

    输入格式

      输入包含两个整数A,B,用一个空格分隔。

    输出格式

      输出一个整数,表示A+B的值。

    样例输入

    5 8

    样例输出

    13

    数据规模和约定

      -1,000,000,000<=A,B<=1,000,000,000。

    分析:看到数据规模,发现用int就可以了,就不必用int 64了。

    #include <stdio.h>
    int main()
    {
        int a,b;
        scanf("%d %d",&a,&b);
        printf("%d",a+b);
        return 0;
    }

    A1001 01序列

    问题描述

      对于长度为6位的一个01串,每一位都可能是0或1,一共有64种可能。它的前几个是:
      000000
      000001
      000010
      000011
      000100
      请按从小到大的顺序输出这64种01串。

    输出格式

      输出64行,每行一个01串。

    分析:二进制而已。

    #include <stdio.h>
    int main()
    {
        int a[6]={0};
        int i,j,k,l;
        for(i=0;i<=63;i++)
        {
            l=i;          // 储存i的值
            j=0;           //数组每次从0开始
            while(i>0)
            {
                a[j]=i%2;
                i/=2;
                j++;      //注意这时候串是反的
            }
            for(k=5;k>=0;k--)
            {
                printf("%d",a[k]);
            }
            i=l;
            printf("
    ");
        }
        return 0;
    }

    A1002 01序列2

    问题描述

      对于长度为6位的一个01串,每一位都可能是0或1,一共有64种可能。它的前几个是:
      000000
      000001
      000010
      000011
      000100
      有这些01串中,有一些01串的1的个数是奇数个,这部分01串的前几个是:
      000001
      000010
      000100
      000111
      001000
      001011
      请按从小到大的顺序输出这些01串。

    输出格式

      每行一个01串。

    分析:和上题一样,只需要加入一个计数器,分析一下1的个数就好。

    #include <stdio.h>
    int main()
    {
       int i,j,k,l,cnt;
       int a[6]={0};
       for(i=0;i<=63;i++)
       {
           l=i;
           cnt=j=0;
           while(i>0){
                a[j]=i%2;
                if(a[j])
                    cnt++;
                i/=2;
                j++;
           }
           if(cnt%2)
           {
               for(k=5;k>=0;k--)
               {
                   printf("%d",a[k]);
               }
               printf("
    ");
           }
           i=l;
       }
        return 0;
    }

    A1030 球队排名

    问题描述

      计算机系学生会体育部组织了一次“酒井杯”足球联赛,有若干支球队参加,现在联赛已经圆满落幕,各队的积分、净胜球、进球数已经计算出来了,现在要你编写一个程序计算各支球队的排名,然后按照名次从高到低的顺序将各个球队的名字打印出来。
      球队的规则如下:
      1、先比较积分,积分高者名次在前;
      2、如果积分相同则比较净胜球,净胜球多者名次在前;
      3、如果积分、净胜球都相同则比较进球数,进球数多者名次在前;
      4、对于积分、净胜球和进球数都一样的球队,根据他们的名称按照字典顺序排列。
      现在假设各个球队的名称都是由大写英文字母组成,并且没有重名的球队。

    输入格式

      第一行是一个正整数N(2<=N<=10),代表球队的数目
      接下来有N行,每一行均包括一个字符串和3个整数,其中字符串代表球队的名称,长度在2与20之间,3个整数依次为球队的积分,净胜球和进球数,其中积分和进球数是0到100间的整数,净胜球的绝对值小于100。

    输出格式

      共N行,每行输出一个字符串,即球队的名称。

    样例输入

    4
    ACMILAN 5 1 5
    SCHALKE 5 1 7
    FENERBAHCE 4 -1 7
    PSV 7 -1 2
    

    样例输出

    PSV
    SCHALKE
    ACMILAN
    FENERBAHCE
     
    分析:简单的选择排序就可以了。虽说有一点暴力。
    #include <stdio.h>
    #include <string.h>
    #define N 10
    #define M 20
    int main()
    {
       int n,i,j,k,l;
       char str[N][M];
       char t[M];
       int a[N]={0},b[N]={0},c[N]={0};     
       scanf("%d",&n);
       for(i=0;i<n;i++)
       {
           scanf("%s%d%d%d",str[i],&a[i],&b[i],&c[i]);
       }
       for(i=0;i<n-1;i++)
       {
           k=i;
           for(j=i;j<n;j++)
           {
               if(a[k]<a[j])
                   k=j;
               else if(a[k]==a[j])
               {
                   if(b[k]<b[j])
                    k=j;
                   else if(b[k]==b[j])
                   {
                       if(c[k]<c[j])
                        k=j;
                       else if(c[k]==c[j])
                       {
     )                     if((strcmp(str[k],str[j])==1))
                                  k=j;
                       }
                   }
               }
           }
           if(k!=i)
           {
               l=a[i];
               a[i]=a[k];
               a[k]=l;
               l=b[i];
               b[i]=b[k];
               b[k]=l;
               l=c[i];
               c[i]=c[k];
               c[k]=l;
               strcpy(t,str[i]);
               strcpy(str[i],str[k]);
               strcpy(str[k],t);
           }
       }
       for(i=0;i<n;i++)
           printf("%s
    ",str[i]);
       return 0;
    }
  • 相关阅读:
    Hdu 5396 Expression (区间Dp)
    Lightoj 1174
    codeforces 570 D. Tree Requests (dfs)
    codeforces 570 E. Pig and Palindromes (DP)
    Hdu 5385 The path
    Hdu 5384 Danganronpa (AC自动机模板)
    Hdu 5372 Segment Game (树状数组)
    Hdu 5379 Mahjong tree (dfs + 组合数)
    Hdu 5371 Hotaru's problem (manacher+枚举)
    Face The Right Way---hdu3276(开关问题)
  • 原文地址:https://www.cnblogs.com/kugwzk/p/5070240.html
Copyright © 2011-2022 走看看