算法笔记_117:算法集训之结果填空题集一(Java)
目录
1 空瓶换汽水
浪费可耻,节约光荣。饮料店节日搞活动:不用付费,用3个某饮料的空瓶就可以换一瓶该饮料。刚好小明前两天买了2瓶该饮料喝完了,瓶子还在。他耍了个小聪明,向老板借了一个空瓶,凑成3个,换了一瓶该饮料,喝完还瓶!!
饮料店老板一统计,已经售出该饮料且未还瓶的有12345瓶,那么如果这些饮料的买主都如小明一样聪明,老板最多还需要送出多少瓶饮料呢?
显然答案是个正整数。 12345 / 2 = 6172
参考答案:
6172
2 三人年龄
三个神秘蒙面人来访F博士。
博士询问他们年龄时,他们说:我们中年龄最小的不超过19岁。我们3人年龄总和为70岁。且我们三人年龄的乘积是所有可能情况中最大的。
请帮助F博士计算他们的年龄,从小到大排列,用逗号分开。 参考答案:
19,25,26
public class Main { public void printResult() {
int[] A = new int[3];
int max = 0;
for(int a = 1;a < 100;a++) {
for(int b = 1;b < 100;b++) {
for(int c = 1;c < 100;c++) {
int min = a;
if(min > b)
min = b;
if(min > c)
min = c;
if(min > 19)
continue;
if(a + b + c == 70) {
if(a*b*c > max) {
A[0] = a;
A[1] = b;
A[2] = c;
max = a*b*c;
}
} }
}
}
System.out.println(A[0]+", "+A[1]+", "+A[2]+", "+max);
} public static void main(String[] args) {
Main test = new Main();
test.printResult();
} }
3 考察团组成
某饭店招待国外考察团。按照标准,对领导是400元/人,随团职员200元/人,对司机50元/人。
考察团共36人,招待费结算为3600元,请问领导、职员、司机各几人。
答案是三个整数,用逗号分隔。 参考答案:
3,5,28
public class Main { public void printResult() {
for(int a = 0;a <= 36;a++) {
for(int b = 0;b <= 36;b++) {
for(int c = 0;c <= 36;c++) {
if(a + b + c == 36) {
int temp = a * 400 + b * 200 + c * 50;
if(temp == 3600)
System.out.println(a+", "+b+", "+c);
}
}
}
}
return;
} public static void main(String[] args) {
Main test = new Main();
test.printResult();
}
}
4 微生物增殖
假设有两种微生物 X 和 Y
X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。
一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。
如果X=10,Y=90 呢?
本题的要求就是写出这两种初始条件下,60分钟后Y的数目。
题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的性质!也许因为你消灭的那只 Y 就是最终导致 Y 种群灭绝的最后一根稻草! 请忍住悲伤,把答案写在“解答.txt”中,不要写在这里!
两个整数,每个1行。
参考答案:
0
94371840
public class Main { public void printResult(int x, int y) {
for(int i = 1;i <= 60;i++) {
y = y -x;
if(y <= 0) {
System.out.println("i = "+i);
break;
}
if(i % 2 == 0)
y = y * 2;
if(i % 3 == 0)
x = x * 2;
}
System.out.println("x = "+x+", y = "+y);
return;
} public static void main(String[] args) {
Main test = new Main();
test.printResult(10, 89);
test.printResult(10, 90);
}
}
5 除去次方数
自然数的平方数是:1 4 9 16 25 …
自然数的立方数是:1 8 27 64 125 …
自然数的4次方数是:1 16 81 256 …
…
这些数字都可以称为次方数。
1~10000中,去掉所有的次方数,还剩下多少个数字? 参考答案:
9875
import java.util.ArrayList; public class Main { public void printResult() {
ArrayList<Long> list = new ArrayList<Long>();
for(long i = 1;i <= 10000;i++)
list.add(i);
int count = 2;
while(true) {
for(long i = 1;i <= 100;i++) {
long a = (long) Math.pow(i, count);
if(a > 10000)
break;
if(list.contains(a)) {
list.remove(list.indexOf(a));
}
}
count++;
if(count > 50)
break;
}
System.out.println(list.size());
return;
} public static void main(String[] args) {
Main test = new Main();
test.printResult();
}
}
6 正六面体染色
正六面体用4种颜色染色。
共有多少种不同的染色样式?
要考虑六面体可以任意旋转、翻转。 参考答案:
240
Burnside引理,正方体涂色问题
(n^6 + 3*n^4 + 12*n^3 + 8*n^2)/24
7 古堡算式
福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:
ABCDE * ? = EDCBA
他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”
华生:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把 ABCDE 所代表的数字写出来。 答案写在“解答.txt”中,不要写在这里! 参考答案:
21978
import java.util.ArrayList; public class Main { public void dfs(ArrayList<Integer> list, int step) {
if(step == 5) {
check(list);
return;
} else {
for(int i = 0;i < 10;i++) {
if(list.contains(i))
continue;
list.add(i);
dfs(list, step + 1);
list.remove(list.size() - 1);
}
}
return;
} public void check(ArrayList<Integer> list) {
if(list.get(0) == 0)
return;
int A = 0, B = 0;;
for(int i = 0;i < list.size();i++) {
A = A * 10 + list.get(i);
B = B * 10 + list.get(4 - i);
}
for(int i = 1;i < 9;i++) {
if(A * i == B) {
System.out.println("A = "+A+", B = "+B+", i = "+i);
}
}
return;
} public static void main(String[] args) {
Main test = new Main();
ArrayList<Integer> list = new ArrayList<Integer>();
test.dfs(list, 0);
} }
8 海盗比酒量
有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。 等船长醒来,发现海盗船搁浅了。他在航海日志中写到:“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......” 请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人没倒下。
如果有多个可能的答案,请列出所有答案,每个答案占一行。
格式是:人数,人数,...
例如,有一种可能是:20,5,4,2,0
多个答案排列顺序不重要。 答案写在“解答.txt”中,不要写在这里! 参考答案:
18,9,3,2,0 (1分)
15,10,3,2,0 (2分)
20,5,4,2,0 (0分)
12,6,4,2,0 (2分)
public class Main { public void printResult() {
for(int a = 20;a > 0;a--) {
for(int b = a - 1;b > 0;b--) {
for(int c = b - 1;c > 0;c--) {
for(int d = c - 1;d > 0;d--) {
int a1 = b * c * d;
int a2 = a * c * d;
int a3 = a * b * d;
int a4 = a * b * c;
int b1 = a * b * c * d;
if(a1 + a2 + a3 + a4 == b1)
System.out.println(a+", "+b+", "+c+", "+d);
}
}
}
}
return;
} public static void main(String[] args) {
Main test = new Main();
test.printResult();
}
}
9 奇怪的比赛
某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:
每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。
每位选手都有一个起步的分数为10分。
某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗?
如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。例如:0010110011 就是可能的情况。
你的任务是算出所有可能情况。每个答案占一行。
多个答案顺序不重要。 答案写在“解答.txt”中,不要写在这里! 参考答案:
0010110011 (0分)
0111010000 (4分)
1011010000 (4分)
import java.util.ArrayList; public class Main {
public ArrayList<Integer> list = new ArrayList<Integer>(); public void dfs(int[] A, int step) {
while(step < A.length) {
list.add(A[step]);
check();
step++;
dfs(A, step);
list.remove(list.size() - 1);
}
return;
} public void check() {
int[] value = new int[11];
for(int i = 0;i < list.size();i++)
value[list.get(i)] = 1;
int x = 10;
for(int i = 1;i < 11;i++) {
if(value[i] == 0)
x = x - i;
else if(value[i] == 1)
x = x * 2;
}
if(x == 100) {
for(int i = 1;i < 11;i++)
System.out.print(value[i]);
System.out.println();
}
return;
} public static void main(String[] args) {
Main test = new Main();
int[] A = {1,2,3,4,5,6,7,8,9,10};
test.dfs(A, 0);
}
}
10 土地测量
造成高房价的原因有许多,比如土地出让价格。既然地价高,土地的面积必须仔细计算。遗憾的是,有些地块的形状不规则,比如是如图【1.jpg】中所示的五边形。
一般需要把它划分为多个三角形来计算。
已知三边求三角形的面积需要用海伦定理,参见【2.jpg】
各条边长数据如下:
AB = 52.1
BC = 57.2
CD = 43.5
DE = 51.9
EA = 33.4
EB = 68.2
EC = 71.9
根据这些数据求五边形地块的面积。四舍五入到小数后两位。只写结果,不要源代码! 答案写在“解答.txt”中,不要写在这里! 图1 图2 参考答案:
3789.86
public class Main { public double getResult(double a, double b, double c) {
double p = (a + b + c) / 2;
double result = Math.sqrt(p * (p - a) * (p - b) * (p - c));
return result;
} public static void main(String[] args) {
Main test = new Main();
double result = test.getResult(52.1, 33.4, 68.2);
result += test.getResult(68.2, 57.2, 71.9);
result += test.getResult(71.9, 51.9, 43.5);
System.out.println(result);
}
}
算法笔记_117:算法集训之结果填空题集一(Java)的更多相关文章
- 算法笔记_116:算法集训之代码填空题集三(Java)
目录 1 数组转置 2 文件管理 3 显示为树形 4 杨辉三角系数 5 圆周率与级数 6 整数翻转 7 自行车行程 8 祖冲之割圆法 9 最大5个数 10 最大镜像子串 1 数组转置 编写程序将 ...
- 算法笔记_115:算法集训之代码填空题集二(Java)
目录 1 连续数的公倍数 2 孪生素数 3 迷宫走法 4 拍7游戏 5 排列为平方数 6 平面点最小距离 7 扑克牌排列 8 三进制转十进制 9 识别复制串 10 蔬菜价格计算 1 连续数的公倍 ...
- 算法笔记_113:算法集训之代码填空题集一(Java)
目录 1 报数游戏 2 不连续处断开 3 猜数字游戏 4 串的反转 5 串中找数字 6 递归连续数 7 复制网站内容 8 股票的风险 9 基因牛的繁殖 10 括号的匹配 1 报数游戏 有n个孩子 ...
- 算法笔记_118:算法集训之结果填空题集二(Java)
目录 1 欧拉与鸡蛋 2 巧排扑克牌 3 排座位 4 黄金队列 5 汉诺塔计数 6 猜生日 7 棋盘上的麦子 8 国庆星期日 9 找素数 10 填写算式 11 取字母组成串 1 欧拉与鸡蛋 大数 ...
- 学习Java 以及对几大基本排序算法(对算法笔记书的研究)的一些学习总结(Java对算法的实现持续更新中)
Java排序一,冒泡排序! 刚刚开始学习Java,但是比较有兴趣研究算法.最近看了一本算法笔记,刚开始只是打算随便看看,但是发现这本书非常不错,尤其是对排序算法,以及哈希函数的一些解释,让我非常的感兴 ...
- 算法笔记_119:蓝桥杯第六届省赛(Java语言A组)试题解答
目录 1 熊怪吃核桃 2 星系炸弹 3 九数分三组 4 循环节长度 5 打印菱形 6 加法变乘法 7 牌型种数 8 移动距离 9 垒骰子 10 灾后重建 前言:以下试题解答代码部分仅供参考,若有 ...
- 算法笔记_041:寻找和为定值的多个数(Java)
目录 1 问题描述 2 解决方案 1 问题描述 输入两个整数n和sum,要求从数列1,2,3,...,n中随意取出几个数,使得它们的和等于sum,请将其中所有可能的组合列出来. 2 解决方案 上述问题 ...
- 算法笔记_165:算法提高 道路和航路(Java)
目录 1 问题描述 2解决方案 1 问题描述 问题描述 农夫约翰正在针对一个新区域的牛奶配送合同进行研究.他打算分发牛奶到T个城镇(标号为1..T),这些城镇通过R条标号为(1..R)的道路和P条 ...
- 算法笔记_125:算法集训之编程大题集一(Java)
目录 1 砝码称重 2 公式解析 3 购物券消费方案 4 机器人行走 5 角谷步数 6 矩形区域的交和并 7 矩阵变换加密法 8 控制台表格 9 拉丁方块填数字 10 立方和等式 1 砝码称重 ...
随机推荐
- newtonsoft动态修改JObject
直接上代码: var data = new { mobile = ", company = ", isTravel = ", invoiceId = ", se ...
- linux基础环境部署
Content 0.序 1.更新安装库 2.安装基础库 0.序 本文主要是记录php在 Centos下的安装配置 .文中如无特别说明.表示php-5.6.31代码目录. 1.更新安装库 $ yum u ...
- 重温PHP之快速排序
基本原理:选出当前数组中任一元素(通常为第一个)作为标准,新建两个空数组分别置于当前数组前后,然后遍历当前数组,如果数组中元素值小于等于第一个元素值就放到前边空数组,否则放到后边空数组. //快速排序 ...
- 提交改动到 github 远程服务器,怎么跳过要求输入密码的步骤
新机器上将工程改动提交到 github 服务器时,发现每次都要输入密码,这个有点儿小烦人,怎么解决这个问题呢? 首先,切换到工程根目录的 .git 隐藏目录,用 TextEdit 打开 config ...
- Material Design(原质化设计)视觉设计语言规范 踏得网镜像
Android 5.0 Lollipop(棒棒糖,也就是之前的代称Android L)全面实践了谷歌最新研发的 Material Design 设计语言规范,只是该设计规范并不是仅针对移动平台. 我们 ...
- 使用Bootstrap 3开发响应式网站实践05,使用Tab、Modal、Form展示内容,使用Popover、Tooltip展示提示信息
本篇体验用Tab插件显示内容.Html部分为: <div class="row" id="moreInfo"> <div class=&quo ...
- 【springboot+easypoi】一行代码搞定excel导入导出
原文:https://www.jianshu.com/p/5d67fb720ece 开发中经常会遇到excel的处理,导入导出解析等等,java中比较流行的用poi,但是每次都要写大段工具类来搞定这事 ...
- [Erlang 0004] Centos 源代码编译 安装 Erlang
原文地址: http://www.cnblogs.com/me-sa/archive/2011/07/09/erlang0004.html 由于最终部署的生产环境是Centos,所以我需要在Cento ...
- Android调用手机中的应用市场,去评分的功能实现
在我们常常使用的软件当中,我们经常可以看到在软件的设置界面,有一个功能那就是去评分的功能,只要我们一点击“去评分”就会调用手机中的应用市场软件.一开始我以为这个功能的实现是要遍历整个手机中的软件包名, ...
- ASP.NET Core 1.0基础之依赖注入
来源https://docs.asp.net/en/latest/fundamentals/dependency-injection.html ASP.NET Core 1.0在设计上原生就支持和 ...