青橙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;
}
原文地址:https://www.cnblogs.com/kugwzk/p/5070240.html