- 浏览: 57192 次
- 性别:
- 来自: 南京
最新评论
-
alzc2012:
int num,max=0; int ste ...
问题4-求两个三位数乘积的最大回文数 -
stef3390:
你好,请问能解释下这个算法吗?我看了很久没有弄懂啊
问题15-求n*n的网格,从左上角到右下角有多少线路 -
zhou_zhihao:
jy1245626 写道23号早过了,你咋还不出山嘞忒忙!得空 ...
最近不更新 封闭式训练 持续到12月23日 -
jy1245626:
23号早过了,你咋还不出山嘞
最近不更新 封闭式训练 持续到12月23日 -
jy1245626:
可惜了,能否共享下你练习的这个题集
最近不更新 封闭式训练 持续到12月23日
文章列表
问题描述如下:
“从1到5的单词为:one,two,three,four,five,一共有3+3+5+4+5=19个字母,那么从1到1000(one thousand)的单词一共有多少个字母?
note:不计空格及连字符。例如,342(three hundred and forty-two)有23个字母和115(one hundred and fifteen)有20个字母,在英国人的使用习惯中,‘and’在写数字中是必不可少的。”
代码实现如下:
/**
* 字母总数
* @return
*/
private static int getS ...
问题如下描述:
“2^15=32768的各个数字之和为3+2+7+6+8=26,求2^1000的各个数字之和。”
实现如下:
/**
* 求a^b的各个数字之和
* 由于是2的1000次方,所以用BigInteger
* @param n
* @return
*/
private static int getSum(int a,int b){
int sum = 0;
String s = new BigInteger(a+"").pow(b).toString();
for (int i = 0; ...
问题叙述如下:
“1个2*2的网格,从左上角到右下角有6条线路(不可回头),如图所示
请问,一个20*20的网格,从左上角到右下角有多少条线路。”
代码实现如下:
/**
* 对于一个n*n的网格,从左上角到右下角有多少条线路
*
* @param n
*/
private static Long getRouteSize(int n) {
Long[][] a = new Long[n + 1][n + 1];// 注意int长度不够
for (int i = 0; i <= n; i++) {
...
问题具体描述如下:
“数列定义是这样的:
n:n/2(n是偶数的时候)
n:3n+1(n是奇数的时候)
当开始的数是13时,数列如下所示
13->40->20->10->5->16->8->4->2->1
所以从13开始的数列长度为10。所有的数列都结束于1。
求开始数在1000000以下的数列长度最长的开始数。”
代码如下:
/**
* n n/2 (n 是偶数) n 3n + 1 (n 是奇数)
*
* @param n
* @return
*/
priv ...
这个问题比较bt
问题描述如下:
“求以下100个50位数之和的前10位数字
37107287533902102798797998220837590246510135740250
46376937677490009712648124896970078050417018260538743249861995247410594742333095130581237266173096299194221336357416157252243056330181107240615490825023067588207539346171171980310421047513778063246676892616 ...
问题描述如下:
“三角数为符合如下标准:
第7个数为1+2+3+4+...+7=28,前几个三角数为:1,,3,6,10,15,21,28......
让我们来看一下他们的因子:
1:1
3:1,3
6:1,2,3,6
10:1,2,5,10
15:1,3,5,15
21:1,3,7,21
28:1,2,4,7,14,28
因子个数超过5的第一个三角数为28,求因子个数超过500个的第一个三角数?”
代码实现如下:
/**
* 获得n的因子的个数
*
* @param n
* @re ...
问题描述如下:
“一个20*20的数组如下所示
08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 0 ...
问题描述如下:
“10以下的质数之和为2+3+5+7=17,求2000000以下的质数之和?”
此问题相对比较简单,在前面的问题中已经给出质数判断的方法,具体代码如下:
/**
* 判断是否是素数
*
* @param n
* @return
*/
public static boolean isPrimeNumber(int n) {
if (n < 2) {
return false;
}
double max = Math.sqrt(n);
for (int i = 2; i &l ...
问题描述如下:
“毕达哥拉斯三元数组存在{a,b,c},a<b<c,使得a^2+b^2=c^2,如3^2+4^2=5^2=25,求a,b,c满足以上条件,并使a+b+c=1000,给出a*b*c的值。”
代码如下:
/**
* 求毕达哥拉斯三元数组{a,b,c},使得a+b+c=target . 毕达哥拉斯三元数组存在{a,b,c},a<b<c,使得a^2+b^2=c^2
* a > 3,(target-(a+b))^2=c^2=a^2+b^2 --> target^2=2*target*(a+b)-2ab
...
问题描述如下:
“对于1000位数值求出连续五位数值的最大乘积,1000位连续数值如下:
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
125406987471585238630507156932909632952274 ...
问题描述如下:
“前6个质数为:2,3,5,7,11,13,那第6个质数为13,求第10001个质数。”
代码如下:
private static int getPrimeNumberBy(int n) {
int j = 1;
int i = 1;
int result = 0;
while (j < n) {
if (AlgorithmUtil.isPrimeNumber(i)) {
result = i;
j++;
}
i += 2;
}
return resu ...
问题描述如下:
“1到10的平方和为:1^2 + 2^2 + ... + 10^2 = 385,和平方为:(1 + 2 + ... + 10)^2 = 55^2 = 3025,他们之间的差为3025-385=2640,求1到100的和平方与平方和之间的差值?”
代码实现如下:
/**
* 求前n个自然数和平方与平方和之差
* @param n
* @return
*/
private static int getDifference(int n) {
int first = 0;
int second = 0;
...
问题叙述如下: “2520是最小的数能够整除1到10,求能被1到20所整除的最小的数?”
代码如下:
/**
* 数字i从m到n,遍历,如果i不能被result整除,我们就将i除以i与result的最大公约数,并与当前result想乘
*
*/
private static int getNumber(int m, int n) {
int result = n;
for (int i = n - 1; i >= m; i--) {
if (result % i != 0) {
result *= i/gcd ...
问题描述如下:
“回文数从两边读值是一样的。两个两位数乘积的最大回文数是9009=99*99,求两个三位数乘积的最大回文数?”
那么我们很快就可以得到实现代码,如下:
private static Long getPalindromicNumber() {
Long max = 0L;
for (Long i = 100L; i <= 999; i++) {
for (Long j = 100L; j <= 999; j++) {
if (isPalindromicNumber(i * j)) {
if (i * ...
问题描述如下:
“13195的质因数(或者叫素因子,素因素)为5,7,13和29,求600851475143的最大质因数是多少?”
这里质因数的概念就不赘述了。
给出代码如下:
private static Long getTheLargestPrimeFactor(Long n) {
Long returnFactor = 1L;
for (Long factor = 2L; n > 1; factor++) {
if (n % factor == 0) {
n /= factor;
returnFactor = ...