1.报纸页数
X星球日报和我们地球的城市早报是一样的,
都是一些单独的纸张叠在一起而已。每张纸印有4版。
比如,某张报纸包含的4页是:5,6,11,12,
可以确定它应该是最上边的第2张报纸。
我们在太空中捡到了一张X星球的报纸,4个页码分别是:
1125,1126,1727,1728
请你计算这份报纸一共多少页(也就是最大页码,并不是用了几张纸哦)?
请填写表示总页数的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
2.网友年龄
某君新认识一网友。
当问及年龄时,他的网友说:
“我的年龄是个2位数,我比儿子大27岁,
如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄”
请你计算:网友的年龄一共有多少种可能情况?
提示:30岁就是其中一种可能哦.
请填写表示可能情况的种数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
#include<iostream>
using namespace std;
int main(){
int sum=0;
for(int i=10;i<=99;i++){
int n1=i/10;
int n2=i%10;
int num=n2*10+n1;
if(num+27==i){
sum++;
cout<<i<<endl;
}
}
cout<<endl<<sum;
return 0;
}
3.圆周率
历史上有许多计算圆周率pai的公式,其中,格雷戈里和莱布尼茨发现了下面的公式:
pai = 4*(1-1/3+1/5-1/7 ....)
参见【图1.png】
这个公式简单而优美,但美中不足,它收敛的太慢了。
如果我们四舍五入保留它的两位小数,那么:
累积了1项和是:4.00
累积了2项和是:2.67
累积了3项和是:3.47
。。。
请你写出它累积了100项的和是多少(四舍五入到小数后两位)。
注意:只填写该小数本身,不要填写任何多余的说明或解释文字。
#include<iostream>
using namespace std;
int main(){
double sum=0;
int flag;
for(int i=1;i<=100;i++){
if(i%2==1)
flag=1;
else
flag=-1;
sum+=(flag)*(4.0/(2*i-1));
}
cout<<sum;
}
4.平方怪圈(我好像是手算的)
如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。
对新产生的正整数再做同样的处理。
如此一来,你会发现,不管开始取的是什么数字,
最终如果不是落入1,就是落入同一个循环圈。
请写出这个循环圈中最大的那个数字。
请填写该最大数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
5.打印方格
小明想在控制台上输出 m x n 个方格。
比如 10x4的,输出的样子是:
+---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+
(如果显示有问题,可以参见【图1.jpg】)
以下是小明写的程序,请你分析其流程,填写划线部分缺少的代码。
#include <stdio.h>
//打印m列,n行的方格
void f(int m, int n)
{
int row;
int col;
for(row=0; row<n; row++){
for(col=0; col<m; col++) printf("+---");
printf("+\n");
for(col=0; col<m; col++) printf("| ");
printf("|\n");
}
printf("+");
for(col=0; col<m; col++) printf("---+"); //填空
printf("\n");
}
int main()
{
f(10,4);
return 0;
}
6.搭积木
小明最近喜欢搭数字积木,
一共有10块积木,每个积木上有一个数字,0~9。
搭积木规则:
每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。
最后搭成4层的金字塔形,必须用完所有的积木。
下面是两种合格的搭法:
0
1 2
3 4 5
6 7 8 9
0
3 1
7 5 2
9 8 6 4
请你计算这样的搭法一共有多少种?
请填表示总数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
#include<iostream>
using namespace std;
int main(){
int num=0;
for(int a=0;a<=9;a++){
for(int b=0;b<=9;b++){
if(b==a||b<a) continue;
for(int c=0;c<=9;c++){
if(c==b||c==a||c<a) continue;
for(int d=0;d<=9;d++){
if(d==a||d==b||d==c||d<b)continue;
for(int e=0;e<=9;e++){
if(e==a||e==b||e==c||e==d||e<b||e<c) continue;
for(int f=0;f<=9;f++){
if(f==e||f==d||f==c||f==b||f==a||f<c)continue;
for(int g=0;g<=9;g++){
if(g==f||g==e||g==d||g==c||g==b||g==a||g<d)continue;
for(int h=0;h<=9;h++){
if(h==g||h==f||h==e||h==d||h==c||h==b||h==a||h<d||h<e)continue;
for(int i=0;i<=9;i++){
if(i==a||i==b||i==c||i==d||i==e||i==f||i==g||i==h||i<e||i<f)continue;
for(int j=0;j<=9;j++){
if(j==a||j==b||j==c||j==d||j==e||j==f||j==g||j==h||j==i||j<f)continue;
num++;
}
}
}
}
}
}
}
}
}
}
cout<<num<<endl;
return 0;
}
7.寒假作业
现在小学的数学题目也不是那么好玩的。
看看这个寒假作业:
□ + □ = □
□ - □ = □
□ × □ = □
□ ÷ □ = □
(如果显示不出来,可以参见【图1.jpg】)
每个方块代表1~13中的某一个数字,但不能重复。
比如:
6 + 7 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5
以及:
7 + 6 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5
就算两种解法。(加法,乘法交换律后算不同的方案)
你一共找到了多少种方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
#include<iostream>
using namespace std;
int main(){
int num=0;
for(int a=1;a<=13;a++){
for(int b=1;b<=13;b++){
if(b==a) continue;
for(int c=1;c<=13;c++){
if(c==b||c==a) continue;
for(int d=1;d<=13;d++){
if(d==a||d==b||d==c)continue;
for(int e=1;e<=13;e++){
if(e==a||e==b||e==c||e==d) continue;
for(int f=1;f<=13;f++){
if(f==e||f==d||f==c||f==b||f==a)continue;
for(int g=1;g<=13;g++){
if(g==f||g==e||g==d||g==c||g==b||g==a)continue;
for(int h=1;h<=13;h++){
if(h==g||h==f||h==e||h==d||h==c||h==b||h==a)continue;
for(int i=1;i<=13;i++){
if(i==a||i==b||i==c||i==d||i==e||i==f||i==g||i==h)continue;
for(int j=1;j<=13;j++){
if(j==a||j==b||j==c||j==d||j==e||j==f||j==g||j==h||j==i)continue;
for(int k=1;k<=13;k++){
if(k==a||k==b||k==c||k==d||k==e||k==f||k==g||k==h||k==i||k==j)continue;
for(int l=1;l<=13;l++){
if(l==a||l==b||l==c||l==d||l==e||l==f||l==g||l==h||l==i||l==j||l==k)continue;
if((a+b)==c&&(d-e)==f&&(g*h)==i&&(j/k)==l)
num++;
}
}
}
}
}
}
}
}
}
}
}
}
cout<<num<<endl;
return 0;
}
8.冰雹数
任意给定一个正整数N,
如果是偶数,执行: N / 2
如果是奇数,执行: N * 3 + 1
生成的新的数字再执行同样的动作,循环往复。
通过观察发现,这个数字会一会儿上升到很高,
一会儿又降落下来。
就这样起起落落的,但最终必会落到“1”
这有点像小冰雹粒子在冰雹云中翻滚增长的样子。
比如N=9
9,28,14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1
可以看到,N=9的时候,这个“小冰雹”最高冲到了52这个高度。
输入格式:
一个正整数N(N<1000000)
输出格式:
一个正整数,表示不大于N的数字,经过冰雹数变换过程中,最高冲到了多少。
例如,输入:
10
程序应该输出:
52
再例如,输入:
100
程序应该输出:
9232
资源约定:
峰值内存消耗 < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。
提交时,注意选择所期望的编译器类型。
9.交换瓶子
有N个瓶子,编号 1 ~ N,放在架子上。
比如有5个瓶子:
2 1 3 5 4
要求每次拿起2个瓶子,交换它们的位置。
经过若干次后,使得瓶子的序号为:
1 2 3 4 5
对于这么简单的情况,显然,至少需要交换2次就可以复位。
如果瓶子更多呢?你可以通过编程来解决。
输入格式为两行:
第一行: 一个正整数N(N<10000), 表示瓶子的数目
第二行:N个正整数,用空格分开,表示瓶子目前的排列情况。
输出数据为一行一个正整数,表示至少交换多少次,才能完成排序。
例如,输入:
5
3 1 2 5 4
程序应该输出:
3
再例如,输入:
5
5 4 3 2 1
程序应该输出:
2
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。
https://blog.csdn.net/red_red_red/article/details/87376415
10.密码脱落
X星球的考古学家发现了一批古代留下来的密码。
这些密码是由A、B、C、D 四种植物的种子串成的序列。
仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。
由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。
你的任务是:
给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。
输入一行,表示现在看到的密码串(长度不大于1000)
要求输出一个正整数,表示至少脱落了多少个种子。
例如,输入:
ABCBA
则程序应该输出:
0
再例如,输入:
ABDCDCBABC
则程序应该输出:
3
资源约定:
峰值内存消耗 < 256M
CPU消耗 < 3000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。
提交时,注意选择所期望的编译器类型。