博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数学题还是计算机题啊
阅读量:6758 次
发布时间:2019-06-26

本文共 2161 字,大约阅读时间需要 7 分钟。

这道题是从看来的。伐木丁丁鸟鸣嘤嘤

 

伐木丁丁鸟鸣嘤嘤

 

1. 缘起

岳父大人拿来一张去年的报纸,说有一道很难做的益智题,让我看看,就是下图中的题目:

如果这是一道正常的益智题,岳父大人既然做不出来,我是肯定做不出来的。不过看过题目后,我觉得这个题目就是一个典型的编程作业。把编程作业当作益智题,显然是个恶作剧了。下面简单介绍一下如何编程求解这道题目。

 

2. 我的解法

这题可以表述如下(因为第一步肯定是2011+7=2018,最后一步肯定是2017-5=2012):

已知x0 = 2018, x1=2017,

f1(x)= (x/2)+7;

f2(x)= (x+7)/2;

f3(x)= (x*3)-5;

f4(x)= (x-5)*3;

并且fa1fa2…fan(x0)= x1

a1,a2,…,an属于集合{1,2,3,4}。

求a1,a2,…,an.
用程序暴力解法如下:
// Math2012.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include 
#include
#include
using namespace std;int f1(int even){ int ret = even / 2 + 7; return ret;}int f2(int odd){ int ret = (odd + 7) / 2; return ret;}int f3(int input){ int ret = (input - 5) * 3; return ret;}int f4(int input){ int ret = input * 3 - 5; return ret;}int _tmain(int argc, _TCHAR* argv[]){ int initial = 2018; int destine = 2017;//2017 674 1334 2661 892 299 584 1154 2301 772 1530 515 1016 std::set
seed_array; std::set
seed_array_copy; std::set
::iterator it; seed_array.insert(initial); bool success = false; while (true) { Sleep(50); printf("seed_array:\n"); for (it = seed_array.begin(); it != seed_array.end(); ++it) { int temp = *it; printf("%d\t", temp); if (temp % 2 == 0) { int ret1 = f1(temp); seed_array_copy.insert(ret1); if (ret1 == destine) { success = true; printf("success.\n"); break; } } else { int ret2 = f2(temp); seed_array_copy.insert(ret2); if (ret2 == destine) { success = true; printf("success.\n"); break; } } int ret3 = f3(temp); seed_array_copy.insert(ret3); if (ret3 == destine) { success = true; printf("success.\n"); break; } int ret4 = f4(temp); seed_array_copy.insert(ret4); if (ret4 == destine) { success = true; printf("success.\n"); break; } } seed_array = seed_array_copy; seed_array_copy = std::set
(); printf("\n"); if (success) { break; } } return 0;}
程序是一目了然的,就是最笨的穷举法。这个程序要执行好几遍,第一遍把destine = 2017, 然后就会输出下一个destine = 674, 以此类推,destine = 2017 674 1334 2661 892 299 584 1154 2301 772 1530 515 1016。见下图:

3.结束

有点无聊的题,不知道谁想出来的。

 

 

你可能感兴趣的文章
三十、小程序解析HTML(对富文本返回数据的处理)
查看>>
利用YUM搭建DNS
查看>>
好详细啊saltsatck超全配置
查看>>
安装LAMP环境遇到Sorry, I cannot run apxs
查看>>
centos7双网卡bond失败
查看>>
JNI AES文件及字符串加解密
查看>>
APUE读书笔记-16网络通信-01简介
查看>>
apache站点稍大文件不完整原因及解决
查看>>
python的reduce函数
查看>>
细读shell-6
查看>>
ubuntu11.10安装php mysql wordpress
查看>>
一、2 基于wsgiref定义自己的web框架
查看>>
Ubuntu Server14.04 32位安装odoo8.0简单方法
查看>>
jQuery-easyui下的多表关联的增删改操作
查看>>
我的友情链接
查看>>
兼容IE,Firefox,CSS3 opacity透明度
查看>>
读取Hive中所有表的表结构,并在新Hive库中创建表,索引等
查看>>
XenServer部署系列之02——系统安装及许可
查看>>
linux下FTP服务器搭建
查看>>
程序的查询 ps - 笔记1
查看>>