目录

1 空瓶换汽水

2 三人年龄

3 考察团组成

4 微生物增殖

5 除去次方数

6 正六面体染色

7 古堡算式

8 海盗比酒量

9 奇怪的比赛

10 土地测量

 


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)的更多相关文章

  1. 算法笔记_116:算法集训之代码填空题集三(Java)

     目录 1 数组转置 2 文件管理 3 显示为树形 4 杨辉三角系数 5 圆周率与级数 6 整数翻转 7 自行车行程 8 祖冲之割圆法 9 最大5个数 10 最大镜像子串   1 数组转置 编写程序将 ...

  2. 算法笔记_115:算法集训之代码填空题集二(Java)

     目录 1 连续数的公倍数 2 孪生素数 3 迷宫走法 4 拍7游戏 5 排列为平方数 6 平面点最小距离 7 扑克牌排列 8 三进制转十进制 9 识别复制串 10 蔬菜价格计算   1 连续数的公倍 ...

  3. 算法笔记_113:算法集训之代码填空题集一(Java)

     目录 1 报数游戏 2 不连续处断开 3 猜数字游戏 4 串的反转 5 串中找数字 6 递归连续数 7 复制网站内容 8 股票的风险 9 基因牛的繁殖 10 括号的匹配   1 报数游戏 有n个孩子 ...

  4. 算法笔记_118:算法集训之结果填空题集二(Java)

     目录 1 欧拉与鸡蛋 2 巧排扑克牌 3 排座位 4 黄金队列 5 汉诺塔计数 6 猜生日 7 棋盘上的麦子 8 国庆星期日 9 找素数 10 填写算式 11 取字母组成串   1 欧拉与鸡蛋 大数 ...

  5. 学习Java 以及对几大基本排序算法(对算法笔记书的研究)的一些学习总结(Java对算法的实现持续更新中)

    Java排序一,冒泡排序! 刚刚开始学习Java,但是比较有兴趣研究算法.最近看了一本算法笔记,刚开始只是打算随便看看,但是发现这本书非常不错,尤其是对排序算法,以及哈希函数的一些解释,让我非常的感兴 ...

  6. 算法笔记_119:蓝桥杯第六届省赛(Java语言A组)试题解答

     目录 1 熊怪吃核桃 2 星系炸弹 3 九数分三组 4 循环节长度 5 打印菱形 6 加法变乘法 7 牌型种数 8 移动距离 9 垒骰子 10 灾后重建   前言:以下试题解答代码部分仅供参考,若有 ...

  7. 算法笔记_041:寻找和为定值的多个数(Java)

    目录 1 问题描述 2 解决方案 1 问题描述 输入两个整数n和sum,要求从数列1,2,3,...,n中随意取出几个数,使得它们的和等于sum,请将其中所有可能的组合列出来. 2 解决方案 上述问题 ...

  8. 算法笔记_165:算法提高 道路和航路(Java)

    目录 1 问题描述 2解决方案   1 问题描述 问题描述 农夫约翰正在针对一个新区域的牛奶配送合同进行研究.他打算分发牛奶到T个城镇(标号为1..T),这些城镇通过R条标号为(1..R)的道路和P条 ...

  9. 算法笔记_125:算法集训之编程大题集一(Java)

     目录 1 砝码称重 2 公式解析 3 购物券消费方案 4 机器人行走 5 角谷步数 6 矩形区域的交和并 7 矩阵变换加密法 8 控制台表格 9 拉丁方块填数字 10 立方和等式   1 砝码称重 ...

随机推荐

  1. macbook pro 开发帮助

    java安装目录 /Library/java/JavaVirtualMachines/ 设置快捷目录 vim .bash_profile 文件中追加一下信息:export dirname=目录路径 重 ...

  2. How to exit the entire application from a Python thread?

    If all your threads except the main ones are daemons, the best approach is generally thread.interrup ...

  3. WinPE作为启动硬盘

    之前我一直是用UltraISO将U盘制作为启动盘,这种方式本身简单易用,但也有一些令人不爽的地方 每次都要重新格式化U盘, 本身WinPE并不大,只需要几百兆空间,一旦U盘在使用时,明明都有足够的空间 ...

  4. 用最简单的例子理解观察者模式(Observer Pattern)

    假设有一个软件公司,每当有新产品推出,就把信息通知到一些客户. 把通知这个动作抽象成一个接口. public interface IService { void Notif(); } 客户如果想获得通 ...

  5. MVC使用Entity Framework Code First,用漂亮表格显示1对多关系

    部门和职员是1对多关系.用一个表格列出所有部门,并且在每行显示该部门下的所有职员名称.如下: 部门和职员的Model: using System.Collections.Generic; namesp ...

  6. x-superobject

    x-superobject GITHUB: https://github.com/onryldz/x-superobject **Delphi Cross Platform Rapid JSON**- ...

  7. windows tomcat nginx session(当一台tomcat关闭后)

    在windows下作nginx负载均衡测试. nginx的配置文件如下: worker_processes  1; events { worker_connections  1024; } http ...

  8. 纯html上下翻滚效果公告板

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. Windows Server 2003 R2 IIS服务的命令行方式重启命令

    iisreset /RESTART 停止后启动   iisreset /START 启动IIS (如果停止)   iisreset /STOP 停止IIS (如果启动)   iisreset /REB ...

  10. tomcat配置301重定向

    tomcat默认情况下不带www的域名是不会跳转到带www的域名的,而且也无法像apache那样通过配置.htaccess来实现.如果想要把不带“www'的域名重定向到带”www"域名下,又 ...