算法题
对于给定的一个数字正整数N,是否存在有几个连续数字相加等于N.
如:
1+2=3
4+5=9
2+3+4=9
1.给定一个数字,求出所有满足以上条件的表达式.
2.什么样的数字一定不存在以上的的情况?
3.N最多可以是几个连续数字相加的和?
(这是<编程之美>上的一道题)
以下是我写的,不知道是否正确,大家看一下吧.
1.
2.当N=2^x的时候,一定有满足的表达式.至于原因我说不太清楚.我想的是
N=2^x=2*2^(x-1)
因为2本身就没有能满足以上条件的表达式,所以2*2^(x-1)也不会满足.
3.第三个问题可以用∑来求.也就是1到x的和等于N.,推理公式为:
x*(x+1)/2=N
x=(sqrt(8*N+1)-1)/2
也就是N最多可以由x项结成.
如:
1+2=3
4+5=9
2+3+4=9
1.给定一个数字,求出所有满足以上条件的表达式.
2.什么样的数字一定不存在以上的的情况?
3.N最多可以是几个连续数字相加的和?
(这是<编程之美>上的一道题)
以下是我写的,不知道是否正确,大家看一下吧.
1.
public class ComputeH
{
public static void Compute(int x)
{
int cnt = (int)System.Math.Ceiling(((System.Math.Sqrt(8 * x + 1) - 1) / 2));
for (int i = 2; i <= cnt; i++)
{
if (i == 2 && x % 2 != 0)
{
Console.WriteLine((x / 2) + "+" + ((int)System.Math.Ceiling((double)x / 2)) + "=" + x);
}
else if (i % 2 != 0 && x % i == 0)
{
print1(x, i);
}
else if (i % 2 == 0 && x % i == i / 2)
{
print2(x, i);
}
}
}
private static void print1(int x,int i)
{
int[] tmp = new int[i];
for (int j = 0; j < i; j++)
{
tmp[j] = x / i;
}
for (int j = 0; j < (i / 2); j++)
{
tmp[j]-=(i/2-j);
tmp[i-j-1] += (i/2 - j);
}
printArray(tmp, x);
}
private static void print2(int x, int i)
{
int[] tmp = new int[i];
for (int j = 0; j < i; j++)
{
tmp[j] = x / i;
}
tmp[i - 1] += x % i;
for (int j = i-2; j >= 1; j--)
{
int t = tmp[j];
tmp[j] += (tmp[j + 1] - 1 - t);
tmp[j - 1] -= (tmp[j + 1] - 1 - t);
}
printArray(tmp, x);
}
private static void printArray(int[] array,int x)
{
for (int j = 0; j < array.Length - 1; j++)
{
Console.Write(array[j] + "+");
}
Console.WriteLine(array[array.Length - 1] + "=" + x);
}
}
2.当N=2^x的时候,一定有满足的表达式.至于原因我说不太清楚.我想的是
N=2^x=2*2^(x-1)
因为2本身就没有能满足以上条件的表达式,所以2*2^(x-1)也不会满足.
3.第三个问题可以用∑来求.也就是1到x的和等于N.,推理公式为:
x*(x+1)/2=N
x=(sqrt(8*N+1)-1)/2
也就是N最多可以由x项结成.
...全文
相关推荐
面试常见算法题
这是在面试中遇到的一些常见算法题,笔试面试经常遇到,所以总结了一下,方面以后查看,分享给大家。
LetCode简单算法题 入门算法题
算法 ,简单 入门 LeetCode网站开放的简单算法题,用于平时检验自己的算法能力,程序设计.
ACM算法题100题-经典算法库
ACM国际大学生软件大赛,主要是考的些算法题,一些相关的软件比赛都是考的算法题,这些题目可以看看
华为笔试算法题汇总
主要为大家汇总了华为笔试算法题,每一题都给出了详细代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
leetcode 算法题 有答案java
目前 需要去面试 据说面试前需要做一道算法题 所以搜集了一些leetcode的算法题共享



