美团2017编程题
发布于 2017-10-12 08:53 1570 次浏览 0 赞 来自 我要提问  

对于一个十进制数,他的数位等于将它各位数字相加得到的和。现在知道某个十进制数位和等于s,并且这个数不包含0,且任意相邻的数位是不同的,现在想知道满足这样条件的最大数是多少

输入:第一行整数s:1<=s<=42

输出满足条件的最大值

2 条回复

var readline = require('readline');

var rl = readline.createInterface({

    input: process.stdin,

    output: process.stdout

});

var inputArr = [];

var number;

rl.on('line', function (line) {

    inputArr.push(line);

    if(line==="end"){

        rl.close();

    }

  number = parseInt(inputArr[0]);

});


rl.on('close', function () {

console.log(maxNum(number));

})


function maxNum (num) {

var result='';

var n = num%3;

if (n === 0) {

var m = num/3;

for (var i = 0; i<m; i++) {

result = result + "21";

} else if (n === 1) {

var m = Math.floor(num/3);

for (var i = 0; i<m; i++) {

result = result + '12';

}

result = result+"1";

} else if (n === 2) {

var m = Math.floor(num/3);

for (var i = 0; i<m; i++) {

result = result + "21";

}

result = result+"2";

}

return result;

}

//这是用的nodejs写的,其实就是121212121的组合或者21212121的组合



2017-10-12 09:48
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
   // write your code here
            Scanner sc=new Scanner(System.in);
            int a=sc.nextInt();
            int num=a%3==0?a/3:a/3+1;
            StringBuffer s=new StringBuffer();
            if(a%3==0){
                for(int i=0;i<num;i++)
                {
                    s.append("21");
                }
                System.out.println(s.toString());
            }
            else if(a%3==1){
                for(int i=0;i<num;i++) {
                    s.append("12");
                }
                s.append("1");
                System.out.println(s.toString());
            }
            else if(a%2==2){
                for(int i=0;i<num;i++)
                {
                    s.append("21");
                }
                s.append("2");
                System.out.println(s.toString());
            }
        }
}


2017-10-12 14:58
添加回复
回到顶部