(算法题)几道算法题
来源:互联网 发布:transmit mac 编辑:程序博客网 时间:2024/06/05 11:53
大家好,这次列举的6道算法题,分别如下:
1:一个长度为99的数组中存放1-100 中的99个数,这99个数都不相同,求1-100中哪个数是没在数组中出现的。
2:将一个字符串逆序输出。
3:拆分一个数,如果它的每一位的立方和等于原数,那么它就是水仙花数,求1-1000000之间的所有水仙花数。如153 = 1*1*1 + 5*5*5 + 3*3*3
4:如果A数的所有因数(不包括A)之和等于B,并且B的所有因数(同样也不包括B)之和也等于A,那么A和B就是亲合数,求1-100000之间的所有亲合数对。如220与284就是亲合数,284 = 1+2+4+5+10+20+11+22+55+110(220的因数) 220 = 1+2+4+71+142(284的因数)
5:分别使用递归和不使用递归实现斐波那契数列,斐波那契数列:1 1 2 3 5 8 13...。
6:将一个数分解为它的所有质因数的积的形式如:28 = 2 * 2 * 7。
暂时先写6个吧。时间有限。
=================================================================================================
解答:
1:不存在的那个数重要用1-100之间的和(5050)减去数组的全部和就可以了。
2:这个问题可以用栈实现,那么也就可以使用递归函数实现。
3:把一个数进行取余,除10运算提取每一位。
4:因数都是成对出现的,因此,只要在1-Sqrt(A)之间找它的因数即可。
5:索引从0开始,每一个都是前2个的和。
6:如果一个数在2-Sqrt(A)之间没有一个因数,那么这个数就是质数。
=================================================================================================
using System;using System.Linq;namespace LilacFlower{ class Program { static void Main(string[] args) { // 第一题 Console.WriteLine("1:============================================="); int[] data = new int[99]; // 缺少的数是100 for (int i = 0; i < 99; i++) { data[98 - i] = i + 1; } Console.WriteLine("The missing number is " + Topic1(data)); Console.WriteLine(); // 第二题 Console.WriteLine("2:============================================="); string txt = "LilacFlower!"; var cr = txt.ToCharArray(); Topic2(cr, 0); Console.WriteLine(); Console.WriteLine(); // 第三题 Console.WriteLine("3:============================================="); Topic3(); Console.WriteLine(); // 第四题 Console.WriteLine("4:============================================="); Topic4(); Console.WriteLine(); // 第五题 Console.WriteLine("5:============================================="); Console.WriteLine("Using recursive: the 7th Fibonacci: {0}", Topic5_Recursive(6)); Console.WriteLine("No using recursive: the 7th Fibonacci: {0}", Topic5_NoRecursive(6)); Console.WriteLine(); // 第六题 Console.WriteLine("6:============================================="); Topic6(220); } #region 第一题 /// <summary> /// 第一题 /// </summary> private static int Topic1(int[] data) { return 5050 - data.Sum(); } #endregion #region 第二题 /// <summary> /// 第二题 /// </summary> /// <param name="data"></param> /// <param name="begin"></param> private static void Topic2(char[] data, int begin) { if (begin == data.Length) return; Topic2(data, begin + 1); Console.Write(data[begin]); } #endregion #region 第三题 /// <summary> /// 第三题 /// </summary> private static void Topic3() { for (int i = 1; i < 1000000; i++) { int sum = 0, j = i; while (j != 0) { // 把数的每一位提取出来 int k = (j % 10); sum += k * k * k; j = j / 10; } //水仙花数 if (sum == i) { Console.WriteLine("Daffodils number:" + sum); } } } #endregion #region 第四题 /// <summary> /// 第四题 /// </summary> private static void Topic4() { for (int i = 1; i < 100001; i++) { int fam = SumOfFactor(i); // 排除像6这样的完全数,并且防止同一对亲合数出现2次 if (fam > i && i == SumOfFactor(fam)) { Console.WriteLine("The affinity number :" + i + "\t" + fam); } } } /// <summary> /// 求一个数的所有因数的和 /// </summary> /// <param name="number"></param> /// <returns></returns> private static int SumOfFactor(int number) { int sum = 0; for (int i = 2; i <= Math.Sqrt(number); i++) { // i是number的因数 if (number % i == 0) { sum += (i + number / i); } } // 1是所有数的因数 return sum + 1; } #endregion #region 第五题 /// <summary> /// 第五题,使用递归 /// </summary> private static int Topic5_Recursive(int number) { if (number == 1 || number == 0) return 1; return Topic5_Recursive(number - 1) + Topic5_Recursive(number - 2); } /// <summary> /// 第五题,不使用递归 /// </summary> private static int Topic5_NoRecursive(int number) { int i = 1, j = 1, times = 0; while (times++ < number) { i = i + j; j = i - j; } return j; } #endregion #region 第六题 /// <summary> /// 第六题 /// </summary> /// <param name="data"></param> private static void Topic6(int data) { Console.Write("{0} = ", data); for (int i = 2; i <= Math.Sqrt(data); i++) { // i是data的因数 if (data % i == 0) { data = data / i; Console.Write("{0} * ", i); i = 1; } } Console.WriteLine("{0}", data); } #endregion }}
附上结果吧:
- (算法题)几道算法题
- 几道算法题
- 几道算法题
- 几道算法题--记下
- 几道数据结构的算法题
- 我面试的几道算法题
- 几道有趣的算法题
- 几道面试到的算法题
- 写了几道算法题练练
- 几道面试到的算法题
- 简单的几道算法题_AboutDP
- python 几到算法题
- 几道经典算法题
- 几道算法解答
- 几道算法习题
- 几道简单算法
- 今天遇到的几道java算法题
- 简单的几道算法题_About Binary Tree
- 认识店面桌面图标的作用和意义
- test
- Android使用OpenCV和FFMpeg的简单方法-开源项目javacv的使用
- ctags
- 设计模式的解析和实现(C++)之九-Decorator模式
- (算法题)几道算法题
- 设计C++回调模型(二):线程安全
- 软件测试用例的设计心得
- 关于json对象和json字符串的转换以及操作
- Linux-2.6.25 TCPIP函数调用大致流程
- 从客户端检测到有潜在危险的Request.Form 值
- C#上机 第十周 单选按钮和复选框
- 加盟商必须知道的收银知识
- Tab与TabHost详细教程