京东校招java工程师_2017年京东校招Java研发笔试编程第1题

笔试的时候,最后因为没有约分,结果线上编译总是过不了,好可惜~

package com.bjut.SaiMa.JingDong;

import java.util.ArrayList;

import java.util.Scanner;

public class Main {

/**2016/9/5

* 给一个数N,计算N变换成2到N-1进制的数字的和的平均值。

* 比如:N=4,

* N,2进制:100,数字和为1

* N,3进制:11,数字和为2

* 那么,计算结果=(1+2)÷2 = 3/2

*

* */

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

while (in.hasNextInt()) {

ArrayListarray = new ArrayList();

array.add(in.nextInt());

for (int i = 0; i < array.size(); i++) {

int result = 0;//所有2到n-1进制的各位数和

int max = array.get(i); //表示n

for (int j = 2; j < array.get(i); j++) {

int temp = j;

int temp1 = 0;

//求对应进制的各位数,相除取余

while (temp >= j) {

temp1 += max % j;

temp = temp / j;

}

temp1 += temp;

result += temp1;

}

//辗转相除法求最大公约数为temp

int a = result;

int b = array.get(i) - 2;

int temp = 0;

while (a % b != 0) {

temp = a % b;

a = b;

b = temp;

}

System.out.println(result/temp+"/"+(array.get(i)-2)/temp);

}

}

}

}

辗转相除法在牛客上的华为在线编程最后一题刷过。如下:

求最小公倍数

热度指数:1713时间限制:1秒空间限制:32768K

算法知识视频讲解

题目描述

正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。

输入描述:

输入两个正整数A和B。

输出描述:

输出A和B的最小公倍数。

输入例子:

5

7

输出例子:

35

package com.bjut.NewCoder_HuaWei;

import java.util.Scanner;

public class HuaWei108 {

/**

* [编程题]求最小公倍数

*

* 正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。

*

* 输入描述:输入两个正整数A和B。

* 输出描述:输出A和B的最小公倍数。

*

* 总结:【辗转相除法】效率高

*

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner in = new Scanner(System.in);

while (in.hasNext()) {

int A = in.nextInt();

int B = in.nextInt();

//最小公倍数 = 两数之积除以最大公约数

//辗转相除法求最大公约数(效率高)

int A1 = A, B1 = B;

int temp = 1;

while ((temp = A % B) > 0) {

A = B;

B = temp;

}

System.out.println(A1 * B1 / B);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值