回文数
问题描述:
1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
输出格式:
按从小到大的顺序输出满足条件的四位十进制数。
#include<bits/stdc++.h>
using namespace std;
int main()
{
for(int i = 1000;i <= 9999;i++)
{
if(i%10 == i/1000 && i %100/10 == i%1000/100)
{
cout << i << endl;
}
}
return 0;
}
特殊回文数
问题描述:
123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式:
输入一行,包含一个正整数n。
输出格式:
按从小到大的顺序输出满足条件的整数,每个整数占一行。
数据规模和约定:1<=n<=54。
样例输入:52
样例输出:
899998
989989
998899
#include<iostream>
using namespace std;
int main(){
int n;
cin >> n;
for(int i=1;i<10;i++){
for(int j=0;j<10;j++){
for(int k=0;k<10;k++){
for(int l=0;l<10;l++){
for(int m=0;m<10;m++){
if((i==m&&j==l&&(i+j+k+l+m==n))){
cout<<i<<j<<k<<l<<m<<endl;
}
}
}
}
}
}
for(int i=1;i<10;i++){
for(int j=0;j<10;j++){
for(int k=0;k<10;k++){
for(int l=0;l<10;l++){
for(int m=0;m<10;m++){
for(int a=0;a<10;a++){
if((i==a&&j==m&&k==l&&(i+j+k+l+m+a==n))){
cout<<i<<j<<k<<l<<m<<a<<endl;
}
}
}
}
}
}
}
return 0;
}
特殊的数字
问题描述:
153是一个非常特殊的数,它等于它的每位数字的立方和,153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。
输出格式:
按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
int main()
{
for(int i=1;i<=9;i++)
{
for(int j=0;j<=9;j++)
{
for(int k=0;k<=9;k++)
{
if(i*100+j*10+k*1==i*i*i+j*j*j+k*k*k)
{
cout << i*100+j*10+k*1 << endl;
}
}
}
}
return 0;
}
数列特征
问题描述:
给出n个数,找出这n个数的最大值,最小值,和。
输入格式:
第一行为整数n,表示数的个数。第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。
输出格式:
输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。
数据规模与约定:1 <= n <= 10000。
样例输入:
5
1 3 -2 4 5
样例输出:
5
-2
11
#include <iostream>
using namespace std;
int a[10000];
int main()
{
int n;
cin >> n;
for(int i = 0;i < n;i++)
{
cin >> a[i];
}
int max = a[0]; //赋初值!
int min = a[0]; //赋初值!
int sum = 0; //如果不赋初值会报错!
for(int j=0;j<n;j++)
{
if(a[j] >= max)
{
max = a[j];
}
if(a[j] <= min)
{
min = a[j];
}
sum += a[j];
}
cout << max << endl;
cout << min << endl;
cout << sum ;
return 0;
}
序列求和
问题描述:求1+2+3+...+n的值。
输入格式:输入包括一个整数n。
输出格式:输出一行,包括一个整数,表示1+2+3+...+n的值。
样例输入:4
样例输出:10
样例输入:100
样例输出:5050
数据规模与约定:1 <= n <= 1,000,000,000。
#include <iostream>
using namespace std;
int main()
{
long long n; //定义n
cin >> n;
cout << (1+n)*n/2; //公式
return 0;
}
圆的面积
问题描述:
给定圆的半径r,求圆的面积。
输入格式:
输入包含一个整数r,表示圆的半径。
输出格式:
输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。
说明:
在本题中,输入是一个整数,但是输出是一个实数。对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。实数输出的问题如果没有特别说明,舍入都是按四舍五入进行。
样例输入:4
样例输出:50.2654825
数据规模与约定:1 <= r <= 10000。
提示:
本题对精度要求较高,请注意π的值应该取较精确的值。你可以使用常量来表示π,比如PI=3.14159265358979323,也可以使用数学公式来求π,比如PI=atan(1.0)*4。
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int r;
double PI = 3.14159265358979323; //给定π值
cin >> r;
cout << fixed << setprecision(7) <<PI * r * r; //圆面积公式与小数位数确定
return 0;
}
杨辉三角
问题描述:
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:
三角形中的每个数字等于它两肩上的数字相加。下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
输入格式:
输入包含一个数n。
输出格式:
输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。
样例输入:4
样例输出
1
1 1
1 2 1
1 3 3 1
数据规模与约定:1 <= n <= 34。
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int a[35][35]={0};
for(int i =0;i<n;i++)
{
for(int j=0;j<i+1;j++)
{
if(i ==0 || j ==0 || i==j)
{
a[i][j]=1;
cout <<a[i][j];
}
else
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
cout << a[i][j];
}
cout << " ";
}
cout <<endl;
}
return 0;
}
查找整数
问题描述:
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
输入格式:
第一行包含一个整数n。第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。第三行包含一个整数a,为待查找的数。
输出格式:
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
样例输入:
6
1 9 4 8 3 9
9
样例输出:2
数据规模与约定:1 <= n <= 1000。
#include <iostream>
using namespace std;
int a[1000];
int main()
{
int n;
cin >> n;
for(int i = 0;i < n;i++)
{
cin >> a[i];
}
int b;
cin >> b;
int c = -1;
for(int j = 0;j < n;j++)
{
if(a[j] == b)
{
cout << j+1;
break; //如果找到就跳出循环。
}
if(j == n-1)
{
cout << -1;
}
}
return 0;
}
字母图形
问题描述:利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入格式:输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式:输出n行,每个m个字符,为你的图形。
样例输入:5 7
样例输出:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定:1 <= n, m <= 26。
0123456
0ABCDEFG A 00 11 22 33 44 绝对值0 0-0=0 1-1=0
1BABCDEF B 01 10 12 21 23 绝对值1
2CBABCDE C 02 13 20 绝对值2
3DCBABCD
4EDCBABC
#include <iostream>
using namespace std;
int main()
{
int n,m;
cin >> n >> m;
int a[n][m];
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(i-j == 0 || j-i==0)
{
cout <<"A";
}
else if(i-j == 1 || j-i==1)
{
cout <<"B";
}
else if(i-j == 2 || j-i==2)
{
cout <<"C";
}
else if(i-j == 3 || j-i==3)
{
cout <<"D";
}
else if(i-j == 4 || j-i==4)
{
cout <<"E";
}
else if(i-j == 5 || j-i==5)
{
cout <<"F";
}
else if(i-j == 6 || j-i==6)
{
cout <<"G";
}
else if(i-j == 7 || j-i==7)
{
cout <<"H";
}
else if(i-j == 8 || j-i==8)
{
cout <<"I";
}
else if(i-j == 9 || j-i==9)
{
cout <<"J";
}
else if(i-j == 10 || j-i==10)
{
cout <<"K";
}
else if(i-j == 11 || j-i==11)
{
cout <<"L";
}
else if(i-j == 12 || j-i==12)
{
cout <<"M";
}
else if(i-j == 13 || j-i==13)
{
cout <<"N";
}
else if(i-j == 14 || j-i==14)
{
cout <<"O";
}
else if(i-j == 15 || j-i==15)
{
cout <<"P";
}
else if(i-j == 16 || j-i==16)
{
cout <<"Q";
}
else if(i-j == 17 || j-i==17)
{
cout <<"R";
}
else if(i-j == 18 || j-i==18)
{
cout <<"S";
}
else if(i-j == 19 || j-i==19)
{
cout <<"T";
}
else if(i-j == 20 || j-i==20)
{
cout <<"U";
}
else if(i-j == 21 || j-i==21)
{
cout <<"V";
}
else if(i-j == 22 || j-i==22)
{
cout <<"W";
}
else if(i-j == 23 || j-i==23)
{
cout <<"X";
}
else if(i-j == 24 || j-i==24)
{
cout <<"Y";
}
else if(i-j == 25 || j-i==25)
{
cout <<"Z";
}
}
cout <<endl;
}
return 0;
}
//简化版 :
//int main()
//{
// int n, m;
// cin >> n >> m;
// int a[n][m];
// for (int i = 0; i < n; i++)
// {
// for (int j = 0; j < m; j++)
// {
// cout << abs(i-j)+65; //0+65的ASCLL码为1A,同理类推
// }
// cout << endl;
// }
// return 0;
字串
问题描述:
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:00000 00001 00010 00011 00100请按从小到大的顺序输出这32种01串。
输入格式:
本试题没有输入。输出格式:输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出:
00000
00001
00010
00011
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
for(int i = 0;i < 32;i++)
{
cout << bitset<5>(i) << endl; //将十进制转换为二进制,头文件#include <bitset>,5表示的是二进制位数
}
return 0;
}
闰年判断
问题描述:
给定一个年份,判断这一年是不是闰年。当以下情况之一满足时,这一年是闰年:
1. 年份是4的倍数而不是100的倍数;
2. 年份是400的倍数。其他的年份都不是闰年。
输入格式:输入包含一个整数y,表示当前的年份。
输出格式:输出一行,如果给定的年份是闰年,则输出yes,否则输出no。
说明:
当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。
样例输入:2013 样例输出:no
样例输入:2016 样例输出:yes
数据规模与约定:1990 <= y <= 2050。
#include <iostream>
using namespace std;
int main()
{
int y;
cin >> y;
if(y % 4 ==0 && y %100 !=0)
{
cout << "yes";
}
else if(y % 400 ==0)
{
cout << "yes";
}
else
{
cout << "no";
}
return 0;
}