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;
    }
  • 相关阅读:
    VS2010 配置驱动开发环境
    C函数调用与入栈顺序
    Ecshop后台流量分析地区分布的地名全是乱码
    使用.net程序发送邮件代码
    齐博系统出现此文件不可写:cache/label_cache/index_0_8_0_0_1_6539c.php
    UCHOME中链接前多了link.php?url=,如何去除
    discuz7.2 修改数据调用中日期格式
    php设置和获取cookie
    删除数据库所有存储过程的SQL语句
    docker搭建skywalking 8.7简明笔记 海口
  • 原文地址:https://www.cnblogs.com/kugwzk/p/5070240.html
Copyright © 2011-2022 走看看