把一个自然数的约数(除去它本身)按照从小到大的顺序写在它的左边,可以得到一个多位数,比如6的约数是1,2,3,写成一个多位数是1236,假如这个多位数中,没有直复数字,那么我们你这个多位数是唯一的。请问,从1-999中,有多少个唯一的多位数,(一位数不是多位数,不作考虑)

let total=0;
for(let i=1;i<=999;i++){
let str='';
for(let j=1;j<=i;j++){
if(i%j===0){
str+= ''+j;
}
}
str=str.split('');
let newStr=[...new Set(str)];
if(str.length>1&&newStr.length===str.length){
total++;
}
}
console.log(total);//83

把1-6排成一排,然后把相邻两个数作差(大数减去小数),把这落差都加起来,最后结果是偶数的排法有种、(比如按照123465排,差就是11121,1+1+1-2+1=6,是偶数,就是一种满足条件的排法)

看错题目,以为1-6可以重复排列:

let total=0;
function b(str){
let newStr='';
for(let i=1;i<=6;i++){
newStr=str+i;
if(newStr.length<6){
b(newStr);
}else{
let sum=0;
for(let j=0;j<newStr.length-1;j++){
sum+=newStr[j]>newStr[j+1]?newStr[j]-newStr[j+1]:newStr[j+1]-newStr[j];
}
if(sum%2===0){
total++;
}
}
}
}
b('')
console.log(total);//23328

正解如下:

let total=0;
const arr=[1,2,3,4,5,6];
function b(arr,newArr){
for(let i=0;i<arr.length;i++){
let tempArr=[...arr];
let tempNewArr=[...newArr];
tempNewArr=tempNewArr.concat(tempArr.splice(i,1));
if(tempNewArr.length<6){
b(tempArr,tempNewArr)
}else{
// console.log(tempNewArr);
let sum=0;
for(let j=0;j<tempNewArr.length-1;j++){
sum+=tempNewArr[j]>tempNewArr[j+1]?tempNewArr[j]-tempNewArr[j+1]:tempNewArr[j+1]-tempNewArr[j];
}
if(sum%2===0){
total++;
}
}
}
}
b(arr,[]);
console.log(total);//288

虽然是小学的题目,现在确实也解不动了,算法很简单,但是在处理递归的时候还是出现了一些问题,让自己陷入泥潭。

其实自己之前写递归写得还是太少,递归确实很好用,但是很神秘,不好实现(主要还是写的太少)。经过反思,得出一个写递归的必要条件(算是一点点小的心得吧):当确定要使用递归时,先不要去考虑递归调用的问题,只考虑第一次的实现方式,先把第一次实现了,再去递归。

看到两道小学数学题,实在是解不动,用js写了一下的更多相关文章

  1. Java中创建String的两道面试题及详解

    我们知道创建一个String类型的变量一般有以下两种方法: String str1 = "abcd"; String str2 = new String("abcd&qu ...

  2. ACM/ICPC 之 两道dijkstra练习题(ZOJ1053(POJ1122)-ZOJ1053)

    两道较为典型的单源最短路径问题,采用dijkstra解法 本来是四道练习题,后来发现后面两道用dijkstra来解的话总觉得有点冗余了,因此暂且分成三篇博客(本篇以及后两篇). ZOJ1053(POJ ...

  3. 两道二分coming~

    第一道:poj 1905Expanding Rods 题意:两道墙(距离L)之间架一根棒子,棒子受热会变长,弯曲,长度变化满足公式( s=(1+n*C)*L),求的是弯曲的高度h. 首先来看这个图: ...

  4. leetcode简单题目两道(2)

    Problem Given an integer, write a function to determine if it is a power of three. Follow up: Could ...

  5. 『ACM C++』Virtual Judge | 两道基础题 - The Architect Omar && Malek and Summer Semester

    这几天一直在宿舍跑PY模型,学校的ACM寒假集训我也没去成,来学校的时候已经18号了,突然加进去也就上一天然后排位赛了,没学什么就去打怕是要被虐成渣,今天开学前一天,看到最后有一场大的排位赛,就上去试 ...

  6. js 从两道面试题加深理解闭包与箭头函数中的this

     壹 ❀ 引 在本文之前我已经花了两个篇幅专门介绍了JavaScript中的闭包与this,正好今早地铁上看到了两道面试题,试着做了下发现挺有意思,所以想单独写一篇文章来记录解析过程.若你对于闭包与t ...

  7. 《Java面试全解析》1000道面试题大全详解(转)

    <Java面试全解析>1000道 面试题大全详解 本人是 2009 年参加编程工作的,一路上在技术公司摸爬滚打,前几年一直在上海,待过的公司有 360 和游久游戏,因为自己家庭的原因,放弃 ...

  8. 搞定ReentrantReadWriteLock 几道小小数学题就够了

    | 好看请赞,养成习惯 你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it ...

  9. ACM/ICPC 之 欧拉回路两道(POJ1300-POJ1386)

    两道有关欧拉回路的例题 POJ1300-Door Man //判定是否存在从某点到0点的欧拉回路 //Time:0Ms Memory:116K #include<iostream> #in ...

随机推荐

  1. 【JZOJ4810】【NOIP2016提高A组五校联考1】道路规划

    题目描述 输入 输出 样例输入 5 1 4 5 2 3 3 4 2 1 5 样例输出 3 数据范围 样例解释 解法 模型显然. 设第一列为a[],第二列为b[],f[i]为前i个数的最大答案. 顺序枚 ...

  2. jmeter的运行原理和测试计划要素

    jmeter运行原理 1.jmeter运行在JVM虚拟机上,jmeter是以线程的方式运行的. 2.jmeter通过线程组来驱动多个线程,运行测试脚本对被测试服务器发起负载,每一个负载机上够可以运行多 ...

  3. python 使用自定义的类方法

  4. Leetcode784.Letter Case Permutation字母大小写全排列

    给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串.返回所有可能得到的字符串集合. 示例: 输入: S = "a1b2" 输出: ["a1 ...

  5. 【JZOJ4854】【NOIP2016提高A组集训第6场11.3】小澳的坐标系

    题目描述 小澳者表也,数学者景也,表动则景随矣. 小澳不喜欢数学,可数学却待小澳如初恋,小澳睡觉的时候也不放过. 小澳的梦境中出现了一个平面直角坐标系,自原点,向四方无限延伸. 小澳在坐标系的原点,他 ...

  6. request header....

    root@xxx# curl -i --get --include 'http://ali-barcode.showapi.com/barcode?code=6938166920785' -H 'Au ...

  7. day18 jQuery,JavaScript高级&Django

    回顾: 整体: - HTML - CSS - JavaScript:基本数据类型:流程控制语句 - DOM - BOM:setInterval() - jQuery - 选择器 - 筛选器 - 内容和 ...

  8. QT_OPENGL-------- 3.ElementArraryBuffer

    与上一节内容基本相同,只是用ElementArraryBuffer绘制三角形,也就是VBO与IBO. 1.VBO 一系列点,通过glDrawArrays指定绘制几个点,是连续的,不能跳跃.2.IBO( ...

  9. @codeforces - 932F@ Escape Through Leaf

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个 n 个点的树(标号1~n),以结点 1 为根.每个结点 ...

  10. JAVA高级特性--内部类

    内部类概念 public class Outer{ class inner{ } } 特点 可以很好的实现隐藏,可以使用procted,private 可以直接访问外部类的所有成员 ,包括私有成员. ...