算法学习(二)

1.Sum of digits

说明:1.第一行包含要处理的值的数量;
   2.然后N行将会描述这些数字的值应该是由3个整数A、B、C来计算的;
   3.对于每一种情况,你需要将A乘以B,然后加上C(即A * B+C),然后计算结果的位数。

1 input data:
2 3
3 11 9 1
4 14 90 232
5 111 15 111
6
7 answer:
8 1 16 21

这里,第一种情况需要计算11*9+1=100,它的数字之和是1+0+0=1

 1 A = [11, 14, 111]
 2 B = [9, 90, 15]
 3 C = [1, 232, 111]
 4
 5 for i in range(len(A)):
 6     Num = A[i] * B[i] + C[i]
 7     Sum = 0
 8     while Num > 0:
 9         if Num % 10 != 0:
10             Sum += Num % 10
11             Num = Num // 10 # 获得每位数的值
12         else:
13             Num = Num // 10
14     print(Sum, end=‘ ‘)   输出:1 16 21

2.Array Checksum

说明:1.您将得到一个用于计算校验和的数组。执行如下的计算:对于数组的每个元素,将这个元素添加到结果变量中,并将这个和乘以113——这个由10000007求模所取的新值应该成为结果的下一个值,以此类推。
   2.输入数据将在第一行中显示数组的长度。
           3.数组的值在第二行中,由空格分隔。

1 input data:
2 6
3 3 1 4 1 5 9
4
5 answer:
6 8921379

算法如下:

 1 Arrays = [3, 1, 4, 1, 5, 9]
 2
 3 seed = 113
 4 result = 0
 5 limit = 10000007
 6 for i in range(len(Arrays)):
 7     result = (result + Arrays[i]) * seed
 8     if 0 < result < 10000007:
 9         result = result
10     else:
11         result = result % 10000007 # 大于10000007的值需要求模
12
13 print(result)  输出:8921379
时间: 2024-12-29 06:53:26

算法学习(二)的相关文章

算法学习(二):O(n^2)排序算法

总结一下学习的复杂度为O(n^2)的三种排序算法:选择排序,插入排序,希尔排序. (1)选择排序:从第一个位置开始每次查找剩下的位置中最小的数值放入当前位置: (2)插入排序:从第二个位置开始,每次都将当前位置的数值插入前面合适的位置,对于几乎有序的数列来说,插入排序能带来更高的效率: (3)希尔排序:变步长区间的插入排序,指定一个步长衰减率,每一轮插入排序都将间隔指定步长的数值排序完成,当步长衰减为1时,就成了标准的插入排序. 代码实现: (1)选择排序 var selectSort = fu

数据结构和算法学习二,之循环和递归

引自:http://blog.csdn.net/feixiaoxing/article/details/6838362 其实编程的朋友知道,不管学什么语言,循环和递归是两个必须学习的内容.当然,如果循环还好理解一点,那么递归却没有那么简单.我们曾经对递归讳莫如深,但是我想告诉大家的是,递归其实没有那么可怕.所谓的递归就是函数自己调用自己而已,循环本质上也是一种递归.  1)求和递归函数 我们可以举一个循环的例子,前面我们说过,如果编写一个1到n的求和函数怎么写呢,你可能会这么写: int cal

Opencv算法学习二

1.直方图:图片中像素值分布情况的坐标图. 直方图均衡化:按一定规律拉伸像素值,提高像素值少的点,增加原图的对比度,使人感觉更清晰的函数. equalizeHist( src, dst ); 2.haar角点检测:首先说边缘检测是检测出相邻像素点的变化,而角点则是两个方向上的像素变化的角点,我们称为角点.常用作特征点的检测,人脸识别等. 角点检测的函数: cornerHarris_demo( 0, 0 );//Harris-Stephens方法检测角点 goodFeaturesToTrack(0

算法学习(二) 全排列问题的非递归算法——模拟堆栈

前一段时间总结了全排列问题的几种递归解法,今天再总结一下如何通过对系统栈行为的模拟来非递归的实现全排列问题. 我们用一个数组stack[]来表示一个栈,用一个top指针来表示栈顶,用一个flags[]数组来标示每一个数字的可用性:用i来表示当前的状态. 初始状态top=0:i=-1:flags数组全为1: i递增,如果i没有越界并且flags[i]==1,那么就将i写入栈中,栈顶往前移动一位:最后把flags[i]赋值为0,i回溯到初始状态-1: 当栈顶越界,就将整个栈的信息打印出来,然后top

学习排序算法(二):Pairwise方法之Ranking SVM

学习排序算法(二):Pairwise方法之Ranking  SVM 1. Pairwise方法的基本思想 Pairwise考虑了文档顺序的关系.它将同一个query的相关文档其中起来,把任意两个文档组成一个pair.我们研究就是以这个pair文档对来研究的. 2. Ranking SVM 在测试的时候,我们就把一个query的所有结果先构建所有可能的pair,然后输入到学习到的模型中,得到每个pair的相对顺序.根据推算就可以得到所有搜索结果的排序了. 典型的Pairwise方法就有rankin

【算法学习】AVL平衡二叉搜索树原理及各项操作编程实现(C语言)

#include<stdio.h> #include "fatal.h" struct AvlNode; typedef struct AvlNode *Position; typedef struct AvlNode *AvlTree; typedef int ElementType ; AvlTree MakeEmpty(AvlTree T); Position Find(ElementType X,AvlTree T); Position FindMin(AvlTre

学习排序算法(二):Pairwise方法之RankNet

学习排序算法(二):Pairwise方法之RankNet 前面一篇博文介绍的Ranking SVM是把LTR问题转化为二值分类问题,而RankNet算法是从另外一个角度来解决,那就是概率的角度. 1. RankNet的基本思想 RankNet方法就是使用交叉熵作为损失函数,学习出一些模型(例如神经网络.决策树等)来计算每个pair的排序得分,学习模型的过程可以使用梯度下降法. 2. 方法流程 首先,我们要明确RankNet方法的目的就是要学习出一个模型,这个模型就是给文档算法的函数f(d, w)

算法学习 - 优先队列的二叉堆实现

PriorityQuenue 优先队列就是作业调度类的ADT,这里用二叉堆来实现. 优先队列最少有两个操作:插入(Insert)和删除最小者(DeleteMin). 插入操作图解: 图片来源:www.educity.cn 删除操作图解: 图片来源:www.cfanz.cn 代码实现: // // main.cpp // binaryHeap // // Created by Alps on 14-8-17. // Copyright (c) 2014年 chen. All rights rese

我的算法学习之路

关于 严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写法实在太绕口--况且CS中的算法往往暗指数据结构和算法(例如算法导论指的实际上是数据结构和算法导论),所以我认为本文题目是合理的. 这篇文章讲了什么? 我这些年学习数据结构和算法的总结. 一些不错的算法书籍和教程. 算法的重要性. 初学 第一次接触数据结构是在大二下学期的数据结构课程.然而这门课程并没有让我入门--当时自己正忙于倒卖各种MP3和耳机,对于这些课程根本就不屑一顾--反正最后考试划个重点也能过,于是这门整个计算机专业本

算法学习三阶段

?? 第一阶段:练经典经常使用算法,以下的每一个算法给我打上十到二十遍,同一时候自己精简代码, 由于太经常使用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都能够把程序打 出来. 1.最短路(Floyd.Dijstra,BellmanFord) 2.最小生成树(先写个prim,kruscal 要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五行以内) 5.叉乘.判线段相交.然后写个凸包. 6.BFS.DFS,同一时候熟练hash 表(要熟,要灵活,代码要