Java--算法特训(1)暴力破解和实用性优先

第一节课的主要内容:暴力破解与实用性优先
   (1)暴力破解在大赛及企业应用中的重要性
   (2)暴力破解中的实用性原则
   (3)逆向解法
   (4)枚举法

题目一:
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。
一次,他参加某个重要会议,年轻的脸孔引人注目。
于是有人询问他的年龄,他回答说:
“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”
请你推算一下,他当时到底有多年轻。

解题方法:
 1 package com.algorithm.java.blueBirdge;
 2
 3 //import static sun.misc.Version.println;
 4
 5 public class testsuanfa {
 6     public static void main(String[] args){
 7         //假设他的年龄在1岁到100岁之间(40的)
 8         for(int i=10;i<100;i++){
 9             //对年龄的立方和年龄的四次方判断
10             int a =i*i*i;
11             int b=a*i;
12             //将a 转成串
13             if((a+"").length()!=4) continue;//如果将a 由数字转成字符串以后,长度不为4,跳出循环
14             if((b+"").length()!=6) continue;//如果将b 由数字转成字符串以后,长度不为6,跳出循环
15             System.out.println(i +"的四次方是"+a+"   的六次方是"+b);
16         }
17     }
18
19 }

测试结果:

由结果可以看出:18

写的程序要求:实用,快速,稳定,有效!



原文地址:https://www.cnblogs.com/Catherinezhilin/p/8506807.html

时间: 2024-10-20 10:42:11

Java--算法特训(1)暴力破解和实用性优先的相关文章

Java--算法特训(1)暴力破解和实用性优先(题目三)

关键词: 考虑实用性优先,能不用if  for循环就不用 题目: 小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分. 三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行.每一列和每一条对角线的和都是相同的. 三阶幻方又被称作九宫格,在小学奥数里有一句非常有名的口诀: "二四为肩,六八为足,左三右七,戴九履一,五居其中", 通过这样的一句口诀就能够非常完美的构造出一个九宫格来. 4 9 2 3 5 7 8 1 6 有意思的是,所有的三阶幻方,都可以通

【未完待续】Java--算法特训(1)暴力破解和实用性优先(题目二)

关键词:列表法,枚举法 测试先行的写代码的方式: 1 public class testsuanfa { 2 public static int romeNum(String a ){ 3 return 1314; 4 } 5 public static void main(String[] args){ 6 System.out.println(romeNum("MCCXIV")); 7 } 8 9 } 题目: [1.8真题:罗马数字] 古罗马帝国开创了辉煌的人类文明,但他们的数字表

Leetcode拾萃(算法篇)——暴力破解(DFS、BFS、permutation)

引言 现在互联网的招工流程,算法题是必不可少的,对于像我这种没搞过ACM的吃瓜群众,好在有leetcode,拯救我于水火.于是乎,断断续续,刷了一些题,其中一些题还是值得细细品味的,现把一些问题整理一下,有些解法是我自己写的,也有些解法是参考了discuss中的答案,当做是秋招的一个小小总结.由于水平有限,代码写得并不好,选的题目也只能用于入门,希望大家见谅. 暴力破解 暴力破解,据我个人理解,就是遍历整棵搜索树,没有删繁就简,紧是单单的搜索和匹配. 1.基本暴力破解:对于最基本的暴力破解,就是

Wireshark黑客发现之旅(4)——暴力破解

Wireshark黑客发现之旅(4)——暴力破解 聚锋实验室 · 2015/08/10 10:33 作者:Mr.Right.K0r4dji 申明:文中提到的攻击方式仅为曝光.打击恶意网络攻击行为,切勿模仿,否则后果自负. 一.个人观点 暴力破解,即用暴力穷举的方式大量尝试性地猜破密码.猜破密码一般有3种方式: 1.排列组合式:首先列出密码组合的可能性,如数字.大写字母.小写字母.特殊字符等:按密码长度从1位.2位……逐渐猜试.当然这种方法需要高性能的破解算法和CPU/GPU做支持. 2.字典破解

开源服务专题之------ssh防止暴力破解及fail2ban的使用方法

15年出现的JAVA反序列化漏洞,另一个是redis配置不当导致机器入侵.只要redis是用root启动的并且未授权的话,就可以通过set方式直接写入一个authorized_keys到系统的/root/.ssh/目录下实现免密码登陆他人的Linux服务器.从而达到入侵成功的效果.fail2ban是一款很棒的开源服务软件,可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员,很好.很实用.很强大!简单来说其功能

Wordpress xmlrpc.php暴力破解漏洞

Wordpress xmlrpc.php暴力破解漏洞 wordpress是很流行的开源博客,它提供远程发布文章的方法,就是使用跟路径的xmlrpc.php这个文件,最近爆出xmlrpc漏洞,漏洞原理是通过xmlrpc进行认证,即使认证失败,也不会被Wordpress安装的安全插件记录,所以不会触发密码输错N次被锁定的情况.因此就可能被暴力破解,如果密码又是弱口令的话,就相当危险了.最简单的解决办法,就是删除xmlrpc.php这个文件.闲来无事,用java写了暴力破解的脚本,其实就是拿着各种用户

java 算法基础

1.算法概要 算法是用于计算.数据处理和自动推理使用的.算法主要是做精确计算和表示一个有限长列的有效方法.算法一般包含清晰定义的指令用于计算函数.基本上也属于一种思考最简洁的方式. 2.算法特征 算法主要包含五个特征 2.1.有穷性: 是指算法必须能在执行有限个步骤后终止: 2.2.确切性: 算法的每一个步骤必须有确切的定义: 2.3.输入项: 一个算法输入有0或多个输入,以刻画预算对象的初始情况,所谓0就是初始化条件: 2.4.输出项: 反馈对数据加工后的结果.没有输出的算法无意义. 2.5.

软件破解入门(暴力破解CrackMe)

所谓暴力破解,就是通过修改汇编代码进而控制程序的运行流程,达到不需注册码也能正常使用软件的目的.相对于解出算法进而编写注册机,暴破的技术含量是比较低的.但也正是因为一本05年的杂志上介绍“暴力破解”的文章,让我入了这个大坑.近来想重拾调试器,就先从最简单的CrackMe入手,熟练一下各工具方法. 下载CrackMe3文件(我用的是看雪<加密与解密>中的CFF CrackMe #3 程序  http://pan.baidu.com/s/1dD9v9x3 ). 1.查看此程序是否加壳.加壳的话还得

2-1-搭建Linux实验环境-sshd服务搭建与管理与防治暴力破解-课堂笔记

1.学习Linux服务前期环境准备.搭建一个RHEL6环境 注意:本章学习推荐大家用centos6.X 系列的系统,用RHEL也可以 实验环境搭建: 系统安装 安装RHEL6或者centos 6系列 64位系统 不要用32位 CENTOS6X86_64 从6.5 -6.8 都可以 下载地址:http://pan.baidu.com/s/1o7DxkQu 密码: puny 1)清空iptables [[email protected] ~]# iptables -F[[email protecte