江中ACM新生10月26日习题题解
目录
第一题:小球自由落体
第二题:超级玛丽游戏
第三题:算法提高 解二元一次方程组
第四题:水仙花数
第五题:C语言-猴子吃桃
第六题:镂空三角形
第七题:习题2-4-7 求最大公约数
第八题:车神羲和
第九题:A+B 输入输出练习II
第十题:迟来的A+B
第一题:小球自由落体
描述
一个小球从100m高度自由落下,每次落地后返跳回到原来高度的一半,再落下,再返弹。求它第n次落地时,共经过多少米以及第n次返弹多高。
输入
一个正整数n
输出
输出一行。
输出两个实数,用空格隔开,结果精确到小数点后两位。
输入样例1
1
输出样例1
100.00 50.00
题解
题目描述提出每次反弹都是原来高度的一半,高度固定100,那么首先反弹之前的那个瞬间小球需要先下落所以至少有100,然后叹气为之前的一半,所以第一次下落应该为50,同时后面每次下落之前需要经历的是先弹起在下落,所以需要下落高度*2,然后即可求解
代码
//C语言
#include <stdio.h>int n;
int main()
{scanf("%d",&n);double sum=100.00;//小球走过的路程double ract=50.00;//反弹的高度for(int i=1;i<n;i++){sum+=ract*2;ract/=2;}printf("%.2lf %.2lf\n",sum,ract);return 0;
}
第二题:超级玛丽游戏
描述
超级玛丽游戏
输入
********************####....#.#..###.....##....###.......###### ### ###........... #...# #...###*####### #.#.# #.#.#####*******###### #.#.# #.#.#...#***.****.*###.... #...# #...#....**********##..... ### ###....**** *****....#### ########## ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
########################################## #----------#
#.....#......##.....#......##.....#......# #----------#
########################################## #----------#
#.#..#....#..##.#..#....#..##.#..#....#..# #----------#
########################################## ############
输出
等同于输入
输入样例1
无
输出样例1
无
题解
简单的直接输出,直接复制然后每一行补一个输出即可
代码
//C++代码
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{cout << " ********" << endl;cout << " ************" << endl;cout << " ####....#." << endl;cout << " #..###.....##...." << endl;cout << " ###.......###### ### ###"<< endl;cout << " ........... #...# #...#" << endl;cout << " ##*####### #.#.# #.#.#" << endl;cout << " ####*******###### #.#.# #.#.#" << endl;cout << " ...#***.****.*###.... #...# #...#" << endl;cout << " ....**********##..... ### ###" << endl;cout << " ....**** *****...." << endl;cout << " #### ####" << endl;cout << " ###### ######" << endl;cout << "##############################################################" << endl;cout << "#...#......#.##...#......#.##...#......#.##------------------#" << endl;cout << "###########################################------------------#" << endl;cout << "#..#....#....##..#....#....##..#....#....#####################" << endl;cout << "########################################## #----------#" << endl;cout << "#.....#......##.....#......##.....#......# #----------#" << endl;cout << "########################################## #----------#" << endl;cout << "#.#..#....#..##.#..#....#..##.#..#....#..# #----------#" << endl;cout << "########################################## ############" << endl;return 0;
}
第三题:算法提高 解二元一次方程组
描述
给定一个二元一次方程组,形如:
a * x + b * y = c;
d * x + e * y = f;
x,y代表未知数,a, b, c, d, e, f为参数。
求解x,y
输入
输入描述:
输入包含六个整数: a, b, c, d, e, f;
输入样例:
例:
3 7 41 2 1 9
输出
输出描述:
输出为方程组的解,两个整数x, y。
输出样例:
例:
2 5
输入样例1
3 7 41 2 1 9
输出样例1
2 5
TIPS
HINT:时间限制:1.0s 内存限制:256.0MB
0 <= a, b, c, d, e, f <= 2147483647
题解
这是一个数学问题,首先消掉一个变量X,或者Y,我选择先消掉X
方程:
将第一个式子整体乘得到
然后再第一个减去第二个得到
化简得到
然后将y带回即可得到x
代码
//C语言
#include <stdio.h>int n;
int main()
{int a,b,c,d,e,f;scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);int up=c*d-a*f;int down=b*d-a*e;int y=up/down;int x=(c-b*y)/a;printf("%d %d\n",x,y);return 0;
}
第四题:水仙花数
描述
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。
现在要求输出所有在m和n范围内的水仙花数。
输入
两个整数m和n(100<=m<=n<=999)。
输出
要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
输入样例1
300 380
输出样例1
370 371
题解
水仙花数如题目所说每一位的立方相加如果等于他自己即为水仙花数。那么就需要先取出每一位。首先我们定义的数据是整数,根据C语言除法直接取整的机制我们可以通过除以10来去掉最后一位,至于取出位数就需要使用取余的运算符(%),取余的即为取出原始数据除一个数的余数
示例:
51/2=15而不是等于25.5
51%2=1因为51=2*25+1;
然后只需要每次对数取余10得到最后一位,然后再数以10消去最后一位即可得到每一位知道数为0,然后途中计算一个立方即可。
如:
153
第一次153%10=3得到3 153/10=15
第二次15%10=5得到5 15/10=1
第三次1%10=1得到1 1/10=0
停止计算
代码
//C语言
#include <stdio.h>int n,m;int func(int a)//判断是否为水仙花数,返回1即为是否则不是
{int x=a;int num=0;while(x){int tmp=x%10;//取出每一位数字num+=(tmp*tmp*tmp);//累计每一位数字立方x=x/10;}if(a==num)return 1;elsereturn 0;
}int main()
{scanf("%d%d",&n,&m);int ans=0;//计数水仙花数的个数for(int i=n; i<=m; i++){if(func(i)){ans=ans+1;printf("%d ",i);}}if(ans)//如果个数为0证明没有则输出noprintf("\n");elseprintf("no\n");return 0;
}
第五题:C语言-猴子吃桃
描述
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。
输入
N
输出
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。
输入样例1
10
输出样例1
1534
题解
题目标书表示猴子每次吃的是一半多一个,然后答案需要反向操作
即:
现在已知y求x,所以
然后根据这个公式循环计算即可
代码
//C语言
#include <stdio.h>int main()
{int n;int sum=1;scanf("%d",&n);for(int i=1;i<n;i++){sum=(sum+1)*2;}printf("%d\n",sum);return 0;
}
第六题:镂空三角形
描述
把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。
输入
每行包含一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。
输出
每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格。
输入样例1
X 2
A 7
@
输出样例1
X
XXXAA AA AA AA AA A
AAAAAAAAAAAAA
解析
这题提前声明了要求多组输入
多组输入的意思是可以一直输入直到达到了题目的输入停止为止
多组输入的C语言格式
若无要求怎么多组输入则为:while(~scanf()) ~表示知道文件结束
如有可以选择在循环体内书写主要格式为while()接入一个输入语句
题目说明为等腰三角形所以肯定是轴对称,而底面长为2*n-1所以中轴线为n的位置那么,上面的都是根据对称得来的,而从上到下两个字母与中轴线的距离为0~n-1然后即可得到结果。
注意每个三角形之后还有一个换行需要注意写好
代码
//C语言
#include <stdio.h>int main()
{char a;int n;while(scanf("%c",&a)){if(a=='@')break;scanf("%d",&n);getchar();for(int i=0; i<n; i++){if(i==n-1){for(int j=0; j<n*2-1; j++)printf("%c",a);}else{for(int j=1; j<=n+i; j++){if(j==n-i||j==n+i)printf("%c",a);elseprintf(" ");}}printf("\n");}printf("\n");}return 0;
}
第七题:习题2-4-7 求最大公约数
描述
习题2-4-7 求最大公约数
输入
两个空格隔开的正整数m和n。
输出
m和n的最大公约数。注意行尾输出换行。
输入样例1
35 14
输出样例2
7
来源
C语言第四版教学实验-第二章 算法
题解
求最大公因数可以可以使用辗转相除法
即一个大的数和一个小的数(不大于前一个)求最大公因数使得每次都让大的数对小的数取余当可以正处即取余为0则代表后一个数为而这的最大公因数。
篇幅有限证明这里就不证明了下次一定。
大概流程为
35 14
先35%14=7 得到7
保留14和7即大的数为14小的数为7
即14%7=0
所以最大公因数为7
代码
#include <stdio.h>int main()
{int n,m;scanf("%d%d",&n,&m);if(n<m){int tmp=n;n=m;m=tmp;}while(1){if(n%m==0){printf("%d\n",m);break;}int tmp=m;m=n%m;n=tmp;}return 0;
}
第八题:车神羲和
描述
在大荒当中,有座天台山,海水从南边流进这座山中。在东海之外,甘水之间,有个羲和国。这里有个叫羲和的女子,是帝俊的妻子,会在甘渊中给太阳洗澡。羲和生了十个太阳,后来被后羿射掉了九个!
剩下的这个太阳,羲和十分喜爱,每天驾车带着这个太阳在羲和车道上到处逛,便产生了日升日落,白天黑夜。
一日,太阳提出要自己驾车,并与羲和比试一番。
羲和虽然非常疼爱太阳,但也很想见证一下太阳的成长,便欣然接受了太阳的挑战。挑战要求和经过如下:
1、两人必须在羲和车道上进行比赛;
2、羲和车道为环形,两人在车道上的车速可以不同,但每人必须保持恒速驾驶;
3、两人从起点以相反的方向同时发车,经过A分钟两车在路上相遇擦肩而过;
4、又经过B分钟,有1人已经回到了终点(也是起点)。此时,另一人与终点的距离为C;
5、先到达终点的人获胜。
挑战结束,先到达终点的人扬长而去,真正的车神从不人前显现。太阳赶到终点,望着正在下山远去的车神羲和的车影,顿时明白了车神的真正含义。为了不留遗憾,太阳决心计算出羲和车道的长度,你能帮他实现这个心愿吗?
输入
输入有多组(不超过100)测试实例。
每组测试实例占一行,为3个正整数A(1 ≤ A ≤ 200)、B(1 ≤ B ≤ 200)、C(1 ≤ C ≤ 200),含义如题中所示。
输入结束将由一行A、B和C均等于0的测试实例表示,不应处理此测试实例。
说明:测试实例保证输入数据合法,且输出数据一定为正整数。
输出
每组测试实例输出一行,为一个正整数,即羲和车道的长度。
输入样例1
120 90 30
100 50 50
0 0 0
输出样例1
120 100
来源
第五届全国中医药院校大学生程序设计竞赛
题解
根据题目要求可以提取出三条信息
1.更快的那个人用A+B的时间到达了终点
2.更慢的那个人走完总里程的里程为(A+B)*速度+C
3.再A时间处两人回合即A*(速度1+速度2)=里程
可以得到三个方程(X为更快的人的速度,Y为更慢的人的速度,L为长度)
1 A*(X+Y)=L
2 X*(A+B)=L
3 (A+B)*Y+C=L
根据1得到4式
2,3相加得到5式
然后相减再化简即可得到
由于不知道A与B的大小关系所以需要取绝对值
代码
#include <stdio.h>
#include <stdlib.h>
#include <math.h>int main()
{int A,B,C;while(~scanf("%d%d%d",&A,&B,&C)){if(A==0&&B==C&&A==B)break;int way=(A*C)/(abs(A-B));//abs为取绝对值printf("%d\n",way);}return 0;
}
第九题:A+B 输入输出练习II
描述
你的任务是计算a+b。
输入
第一行是一个整数N,表示后面会有N行a和b,通过空格隔开。
输出
对于输入的每对a和b,你需要在相应的行输出a、b的和。
如第二对a和b,对应的和也输出在第二行。
输入样例1
2
1 5
10 20
输出样例1
6 30
题解
这题就是输入N个a和b然后输出a+b即可
代码
#include <stdio.h>
#include <stdlib.h>
#include <math.h>int main()
{int n;scanf("%d",&n);for(int i=0;i<n;i++){int a,b;scanf("%d%d",&a,&b);printf("%d\n",a+b);}return 0;
}
第十题:迟来的A+B
描述
“A+B”多么熟悉的题目,在本届校赛开始前CHZ同学(人称“dp小王子“)一直叫我出道A+B给他做,但由于各种原因没有出成,使他感到很遗憾,为了在世界末日前弥补他的遗憾,就决定出道A+B献给CHZ同学!!题目是这样的:
先给你n(1=<n<=100000)个数的数组A,再给你两个数X,Y(1=<X,Y<n),求sum=(A0+A1+….+Ax-1)+(Ay+Ay+1+….+An-1);
输入
有多组数据,每组数据的第一行有两个数字n,m(1=<m<=50000),表示数据的个数和查询的个数,第二行是n个数据,第三行到m+3行每行有两个数X,Y(1=<X,Y<n);
输出
对每个查询输出一个结果,每个结果占一行
输入样例1
10 1
1 2 3 4 5 5 4 3 2 1
5 5
输出样例1
30
题解
题目意思是给你一组数据然后求前X个数和后Y个数的和即可
可以使用数组存储前几个数的和以及后几个数的和
然后相加输出即可
代码
#include <stdio.h>
#include <stdlib.h>
#include <math.h>int a[100001];
int sum_x[100001];
int sum_y[100001];int main()
{int n,m;while(~scanf("%d%d",&n,&m)){int i;for(i=0;i<n;i++){scanf("%d",&a[i]);sum_x[i]=a[i];//考虑前面的数值if(i>0)//数组下标必须大于0sum_x[i]+=sum_x[i-1];}for(i=n-1;i>=0;i--){sum_y[i]=a[i];if(i<n-1)//数组下表必须小于nsum_y[i]+=sum_y[i+1];}while(m--){int a,b;scanf("%d%d",&a,&b);if(a>0)//数组下标必须大于0printf("%d\n",sum_x[a-1]+sum_y[b]);elseprintf("%d\n",sum_x[a]+sum_y[b]);}}return 0;
}
江中ACM新生10月26日习题题解相关推荐
- el-tree 权限 勾选_一周新债总结,最高涨30%,10月26日起可转债交易需要先开权限...
温馨提示:10月26日起,可转债交易需要先开权限(在券商APP.我的业务处办理),一定要提前操作好. 下面来看20201012-20201018一周新债情况. 本周上市 名称 上市日期 首日最高 首日 ...
- 2015年10月26日作业
2015年10月26日作业 一.PMI权限(授权)管理基础设施 1.访问控制包括哪2个重要过程,及内容: 答:(1)通过"鉴别"来检验主体的合法身份:(2)过"授权&qu ...
- 【历史上的今天】10 月 26 日:NetBSD 系统发布;Windows 8 诞生;微软推出 Surface 系列
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 10 月 26 日,历史上的今天,英国足协在伦敦成立,制定了第一个足球规则,宣告了现代足球运动的诞生 ...
- 战争与文明维修服务器有补偿吗,【战争与文明】2017年10月26日更新维护公告
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 尊敬的陛下: 我们将于2017年10月26日对服务器进行停机更新维护,在此期间无法登录游戏. 维护时间: 10月26日9:00~12:00,预计维护3小时 ...
- SSL2793 2017年10月26日提高组T2 Deep(博弈)
2017年10月26日提高组T2 Deep Description 失败的燃烧军团想要逃回深渊,Khadgar 想要追击它们. 然而进入深渊的传送门只有一座,燃烧军团和Khadgar 各有一些法力水晶 ...
- 程序猿学习笔记~2020年10月26日(数据类型与条件语句)
Java学习日记~2020年10月26日 基本数据类型 整数类型 整数类型有byte.short.int.long.在不同位数的操作系统占用不同的字节.在64位操作系统中,它们分别占1.2.4.8个字 ...
- 10月26日绿健简报,星期三,农历十月初二
10月26日绿健简报,星期三,农历十月初二 1. <促进个体工商户发展条例>出炉:个体工商户可自愿变更经营者或转型为企业,地方政府应实施分型分类培育和精准帮扶. 2. 电子烟消费税&quo ...
- 诺基亚将于10月26日发布首款WindowsPhone7手机
[赛迪网讯]10月21日消息,据国外媒体报道,诺基亚将在10月26至27日在伦敦举行的诺基亚世界大会上向全世界展示第一款诺基亚Windows手机. 这个消息是微软Windows Phone部门总裁安迪 ...
- 10月26日练习注册用例的编写与ibatis培训
eclipse代码重构:一个FormBean写完后,如果通过菜单重新对这个类命名,其他源程序中引用这个类的地方都会自动发生修改,但在jsp页面中使用<jsp:usebean>引用的这个类名 ...
最新文章
- 浏览器支持java_为什么我下载了java并提示浏览器不支持j
- Twitter Snowflake
- linux一键启动,Linux一键启动、停止、重启Tomcat sh脚本
- python调用simulink_使用Python从dbc文件中提取simulink建模数据定义
- Visual C++ 中的ODBC编程
- 阿里云获全球第一张云安全国际认证金牌
- 下载地址jquery upload file demo (C#)
- Windows和Linux hosts 文件位置
- java 生成ai矢量图_(针对新手)AI将位图图标转换为矢量图方法
- 互联网大脑加速进化,2018年类脑智能巨系统在中国突然爆发
- Microbiome:根际微生物影响植物开花时间
- 举个栗子~Tableau 技巧(226):用分段条形图呈现数据占比
- 谷歌protobuf简介
- lg、ln的表示方法
- @RunWith注解作用
- vue 页面使用两套el-form表单并且嵌套使用el-checkbox
- 基于Nordic52832的六轴HID蓝牙鼠标开发
- 山东 计算机专业,山东省内计算机专业大学排名?
- 《你的善良必须有点锋芒》-慕言歌
- Selenium基础知识 多窗口处理
热门文章
- spring 中 ApplicationContext 的 refresh 方法做了什么
- 什么是流程图?怎么画流程图?
- 365工作网:注册简历,赢取奥运“福娃”
- 【论文笔记】Improving neural networks by preventing co-adaptation of feature detectors
- js serializeArray方法
- (NO.00004)iOS实现打砖块游戏(十一):一闪一闪亮晶晶,我们都是小星星
- visual basic VB.NET实例系列教程第二节(好玩又有趣的龟兔赛跑程序)
- Hibernate之Query接口的uniqueResult()方法
- Android maven多flavor上传
- 玩游戏上瘾的感觉变化路线