青橙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("\n"); } 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("\n"); } 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\n",str[i]); return 0; }