题目一:A+B问题

Description:

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

Input:

输入的第一行包括两个整数,由空格分隔,分别表示A、B。

Output:

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

Sample input:

12 45

Sample output:

57

数据规模与约定

-10000 <= A, B <= 10000。

#include

using namespace std;

int main()

{

int a, b;

cin >> a >> b;

cout << a + b;

return 0;

}

题目二:数列排序

Description:

给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200

Input:

第一行为一个整数n。 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。

Output:

输出一行,按从小到大的顺序输出排序后的数列。

Sample input:

5 8 3 6 4 9

Sample output:

3 4 6 8 9

#include

#include

using namespace std;

int main()

{

int a[200],n;

cin>>n;

for(int i=1;i<=n;i++)

cin>>a[i];

sort(a+1,a+1+n);

for(int i=1;i<=n;i++)

cout<

return 0;

}

题目三:十六进制转八进制

Description:

给定n个十六进制正整数,输出它们对应的八进制数。

Input:

输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

Output:

输出n行,每行为输入对应的八进制正整数。

Sample input:

2 39 123ABC

Sample output:

71 4435274

【注意】 输入的十六进制数不会有前导0,比如012A。 输出的八进制数也不能有前导0。

#include

#include

int main()

{

int n,i,j,k,a,cur,ok,m,l,flag;

char s[10][100001],d16[16][5]= {"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"},out[4]= {},z[13]= {};

scanf("%d",&n);

for(j=0; j

scanf("%s",s[j]);

for(j=0; j

{

k=0;

ok=1;

flag = 0;

m=0; /*初始化标记数据*/

l=strlen(s[j]); /* 初始化标记数据*/

a=3-l%3; /*初始化标记数据*/

if(a==3) ok=0; /*十六进制数长度刚好为3的倍数时转二进制不需补0,ok标记其是否为3的倍数0是1不是*/

for(i=0; i

{

if(65<=s[j][i])

s[j][i]-=7;

if(ok) /*十六进制数位数不足转二进制时补0占位*/

if(a==1)

{

strcpy(z,"0000");

k=k+4;

ok=0;

a=0;

}

else if(a==2)

{

strcpy(z,"00000000");

k=k+8;

ok=0;

}

z[k++]=d16[s[j][i]-48][0]; /*一位十六进制转四位二进制*/

z[k++]=d16[s[j][i]-48][1];

z[k++]=d16[s[j][i]-48][2];

z[k++]=d16[s[j][i]-48][3];

if(k==12) /*每转三位十六进制数将其转为四位八进制数*/

{

m=0;

for(cur=0; cur<12; m++)

out[m]=((z[cur++]-48)*4+(z[cur++]-48)*2+(z[cur++]-48)*1)+48;

cur = 0;

k=0;

if(!flag)

while(out[cur]=='0'&&cur

cur++;

if(cur==m)

flag = 0;

else

flag = 1;

for(; cur

printf("%c",out[cur]);

}

}

putchar('\n');

}

return 0;

}

题目四:十六进制转十进制

Description:

从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

Sample input:

FFFF

Sample output:

65535

#include

#include

using namespace std;

int main() {

string s;

while (cin >> s) {

int len = s.length();

long long sum = 0;

for (int i = 0; i < len; i++) {

if (s[i] >= 'A' && s[i] <= 'F') {

sum = sum * 16 + s[i] - 'A' + 10;

}

else {

sum = sum * 16 + s[i] - '0';

}

}

cout << sum;

}

return 0;

}

题目五:十进制转十六进制

Description:

十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。 给出一个非负整数,将它表示成十六进制的形式。

Input:

输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647

Output:

输出这个整数的16进制表示

Sample input:

30

Sample output:

1E

#include "stdio.h"

int main()

{

int num=0;

int a[100];

int i=0;

int m=0;

int yu;

char hex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

scanf("%d",&num);

if(num==0) printf("0");

while(num>0)

{ yu=num%16;

a[i++]=yu;

num=num/16;

}

for(i=i-1;i>=0;i--)

//倒序输出

{m=a[i];

printf("%c",hex[m]);

}

printf("\n");

}

题目六:特殊回文数

Description:

123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

Input:

输入一行,包含一个正整数n。

Output:

按从小到大的顺序输出满足条件的整数,每个整数占一行。

Sample input:

52

Sample output:

899998 989989 998899

#include

using namespace std;

int main()

{

int x=0,y=0,x1=0,y1=0,x2=0,y2=0;

int n;

cin>>n;

for(int i=10000;i<=99999;i++)

{//12321

x=i/1000;

y=i%10;

x1=i%100;

y1=x1/10;

x2=i/100;

y2=x2%10;

if(x==y*10+y1&&(y1+y)*2+y2==n) cout<

}

for(int i=100000;i<=999999;i++)

{

x=i/1000;

x1=i%1000;

y=x1%10;

y1=x1%100;

x2=y1/10;

y2=x1/100;

if(x==y*100+x2*10+y2&&(y+x2+y2)*2==n) cout<

}

return 0;

}

题目七:回文数

Description:

1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。

Output:

按从小到大的顺序输出满足条件的四位十进制数。

#include

using namespace std;

int main()

{

int x,y,x1,y1;

for(int i=1000;i<=9999;i++)

{

x=i/100;

y=i%10;

x1=i%100;

y1=x1/10;

if(x==y*10+y1) cout<

}

return 0;

}

题目八:特殊的数字

Description:

153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。

Output:

按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。

#include

using namespace std;

int main()

{

int x,y,x1,y1;

for(int i=100;i<=999;i++)

{

x=i/100;

y=i%10;

x1=i%100;

y1=x1/10;

if(i==x*x*x+y1*y1*y1+y*y*y) cout<

}

return 0;

}

题目九:杨辉三角形

Description:

杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 

下面给出了杨辉三角形的前4行: 

   1 

  1 1 

 1 2 1

1 3 3 1 

给出n,输出它的前n行。

Input:

输入包含一个数n。

Output:

输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。

Sample input:

4

Sample output:

1 1 1 1 2 1 1 3 3 1

#include

#include

using namespace std;

int main()

{

int n,a[35][35];

cin>>n;

for(int i=0;i

{

a[i][0]=1;

a[i][i]=1;

for(int j=1;j

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

for(int i=0;i

{

for(int j=0;j<=i;j++)

cout<

cout<

}

return 0;

}

题目十:查找整数

Description:

给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

Input:

第一行包含一个整数n。

第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。

第三行包含一个整数a,为待查找的数。

Output:

如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1

Sample input:

6 1 9 4 8 3 9 9

Sample output:

2

数据规模与约定

1 <= n <= 1000。

#include

#include

using namespace std;

int main()

{

int n,a[10000],s,flag=0;

cin>>n;

for(int i=1;i<=n;i++)

cin>>a[i];

cin>>s;

for(int i=1;i<=n;i++)

if(a[i]==s) { flag=1;cout<

if(flag==0) cout<<-1;

return 0;

}

题目十一:数列特征

Description:

给出n个数,找出这n个数的最大值,最小值,和。

Input:

第一行为整数n,表示数的个数。 第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。

Output:

输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。

Sample input:

5

1 3 -2 4 5

Sample output:

5

2

-11

数据规模和约定

1 <= n <= 10000。

#include

#include

#include

using namespace std;

int main() {

int n;

cin >> n;

vector nums(n);

for (int i = 0; i < n; i++) {

cin >> nums[i];

}

int maxNum = nums[0];

int minNum = nums[0];

int sum = 0;

for (int i = 0; i < n; i++) {

if (nums[i] > maxNum) {

maxNum = nums[i];

}

if (nums[i] < minNum) {

minNum = nums[i];

}

sum += nums[i];

}

cout << maxNum << endl;

cout << minNum << endl;

cout << sum << endl;

return 0;

}

题目十二:字母图形

Description:

利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

Input:

输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数

Output:

输出n行,每个m个字符,为你的图形。

Sample input:

5 7

Sample output:

ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC

数据规模与约定

1 <= n, m <= 26。

#include

#include

using namespace std;

int main(){

int n, m;

cin >> n >> m;

for(int i = 0; i < n; i++){

for(int j = 0; j < m; j++){

cout << char(abs(i-j) + 'A');

}

cout << endl;

}

return 0;

}

题目十三:01字符串

Description:

对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000

00001

00010

00011

00100

请按从小到大的顺序输出这32种01串。

Input:

本试题没有输入。

Output:

输出32行,按从小到大的顺序每行一个长度为5的01串。

Sample output:

00000 00001 00010 00011 <以下部分省略>

#include

using namespace std;

int main()

{

int x[5];

x[0]=0,x[1]=1;

for(int a=0;a<2;a++)

{

for(int b=0;b<2;b++)

{

for(int c=0;c<2;c++)

{

for(int d=0;d<2;d++)

{

for(int e=0;e<2;e++)

{

cout<

}

}

}

}

}

return 0;

}

题目十四:闰年判断

Description:

给定一个年份,判断这一年是不是闰年。

当以下情况之一满足时,这一年是闰年:

1. 年份是4的倍数而不是100的倍数;

2. 年份是400的倍数。

其他的年份都不是闰年。

Input:

输入包含一个整数y,表示当前的年份。

Output:

输出一行,如果给定的年份是闰年,则输出yes,否则输出no。

Sample input:

2013

Sample output:

no

数据规模与约定

1990 <= y <= 2050。

#include

using namespace std;

int main()

{

int y,x,x1,x2;

cin>>y;

x=y%4;

x1=y%100;

x2=y%400;

if(x==0&&x1!=0||x2==0) cout<<"yes";

else cout<<"no";

return 0;

}

题目十五:Fibonacci数列

Description:

Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。

当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。

Input:

输入包含一个整数n。

Output:

输出一行,包含一个整数,表示Fn除以10007的余数。

Sample input:

10

Sample output:

55

#include

using namespace std;

int main() {

int n;

cin >> n;

int f1 = 1, f2 = 1, fn = 1;

for (int i = 3; i <= n; i++) {

fn = (f1 + f2) % 10007;

f1 = f2;

f2 = fn;

}

cout << fn ;

return 0;

}

题目十六:圆的面积

Description:

给定圆的半径r,求圆的面积。

Input:

输入包含一个整数r,表示圆的半径。

Output:

输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。

Sample input:

4

Sample output:

50.2654825

数据规模与约定

1 <= r <= 10000。

#include

#include

#define PI 3.14159265358979323

using namespace std;

int main() {

int r;

double s;

cin>>r;

s=PI*r*r;

cout<

return 0;

}

题目十七:序列求和

Description:

求1+2+3+...+n的值。

Input:

输入包括一个整数n。

Output:

输出一行,包括一个整数,表示1+2+3+...+n的值。

Sample input:

4

Sample output:

10

数据规模与约定

1 <= n <= 1,000,000,000。

#include

using namespace std;

int main() {

long long n;

while(cin >> n)

{long long sum = (n * (n + 1)) / 2;

cout << sum << endl;}

return 0;

}

精彩文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: