阿里笔试养猪代码分享

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

import org.junit.Test;

public class test1 {

/** 请完成下面这个函数,实现题目要求的功能 **/
/** 当然,你也可以不按照这个模板来作答,完全按照自己的想法来 ^-^ **/
static String calculate(int m, int k) {
StringBuffer sb = new StringBuffer();
sb.append(getNum(m));
sb.append(",");
sb.append(getYear(m));
sb.append(",");
sb.append(maxRev(m, k));
return sb.toString();
}

@Test
public void test() {
int m=20;
int a[]=new int[m];
for(int i=0;i<m;i++) { // 反转数组
StringBuffer sb=new StringBuffer();
sb.append(getNum(i+1));
sb.reverse();
String s=sb.toString();
int num=Integer.parseInt(s);
a[i]=num;
}
Arrays.sort(a);
System.out.println(Arrays.toString(a));
}

static int maxRev(int m,int k) {
int a[]=new int[m];
for(int i=0;i<m;i++) { // 反转数组
StringBuffer sb=new StringBuffer();
sb.append(getNum(i+1));
sb.reverse();
String s=sb.toString();
int num=Integer.parseInt(s);
a[i]=num;
}

int b[]=new int[m];
for(int i=0;i<m;i++) { //原数组
b[i]=getNum(i+1);
}


Arrays.sort(a);//升序排序
int result=a[m-k];
String temp=""+result;
StringBuffer sbb=new StringBuffer(temp);
sbb.reverse();
result=Integer.parseInt(sbb.toString());
int index=0;
for(index=0;index<m;index++) {
if(result==b[index]) break;
}
return index+1;
}


static int getYear(int m) {
int i = 0;
int sum = 0;
while (true) {
sum=0;
for (int k = 0; k <= i; k++) {
sum += newBorn(k);
}
if (sum >= m)
break;
i++;
}
return i + 2019;
}

static int newBorn(int i) {
if (i == 0)
return 2;
if (i == 1)
return 1;
if (i == 2)
return 2;
if (i == 3)
return 3;
int sum = 0;
for (int k = 0; k <= i - 2; k++) {
sum += newBorn(k);
}
return sum;
}

public static int getNum(int m) {
if (m == 1)
return 2;
if (m == 2)
return 3;
if (m == 3)
return 4;
return getNum(m - 2) + getNum(m - 3);
}

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] line = in.nextLine().split(",");
int m = Integer.valueOf(line[0]);
int k = Integer.valueOf(line[1]);
System.out.println(calculate(m, k));

}
}
#阿里巴巴##笔试题目#
全部评论

相关推荐

02-12 00:59
已编辑
哈尔滨工业大学 产品经理
华为 软件开发岗 20.6*16薪 本科
点赞 评论 收藏
分享
神哥不得了:首先我就是在成都,成都的互联网格外的卷,如果是凭现在的简历的话很难找到大厂,建议再添加一个高质量的项目上去,另外专业技能的话最好是超过每一条的一半
点赞 评论 收藏
分享
2024-12-29 11:08
湖南工业大学 Java
程序员牛肉:简历没什么大问题了。 而且不要再换项目了。三月份就开暑期实习了,现在都一月份了。实在来不及重新开一下项目了。把一个项目写完或许很快,但是把一个项目搞懂吃透并不简单。所以不要换项目了,把你简历上面的两个项目好好挖一挖吧。 具体 体现在:你能不能流利的说出你的项目的每一个功能点代码实现?你能不能说出在这块除了A技术之外,还有其他技术能够实现嘛?如果有其他技术能够实现,那你这块为什么选择了你当前用的这个技术?
投递牛客等公司
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
02-12 18:14
RT,这周五就是情人节了,前女友给我发了消息,我该不该回?
Yoswell:原则上来说让她滚,但是本着工作很累下班想吃瓜的心态,我觉得你可以回一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务