一天一道算法题--6.9--数学题

感谢微信平台----一天一道算法题---------每天多一点进步----

今天 刚刚又玩了2盘 LOL  把我的时间全给弄光了.....

因为 晚上 可能开始写课程设计了 抓紧时间 写了今天的

关于那个 stack的 感觉超出我预期想象了 得压几天了 哎..

problem:

  求和为指定数字的连续正整数序列

  for example:

    Sn = 100时

    18 19 20 21 22

    9 10 11 12 13 14 15 16

analyse:

  有事  先撤.....

  刚刚头太痛 眼睛太酸了 应该是每晚太晚睡了....  白天 又要早起 早自习 虽然 经常一睡就到9点了.....

  好 回到这题

  晓爷 说我英语他渣 怎么过6J  所以 我决定 今天 代码的注释 都用 英文来实现.... 为6J准备...

  这题的关键是 把握住 等差数列求和的转换 注意到可以转换成一次线性方程

  好 我下面上demo....

  

 1 // give a sum and n
2 // so the arr is from 1 to n
3 // sum = n*(a1+an)/2 = na1 + n*(n-1) / 2;
4 // so a1 = ( sum - n(n-1)/2 )/n
5
6 #include <iostream>
7 using namespace std;
8
9 void slove( int sum , int n )
10 {
11 int i , value , cnt , first;
12 if( sum<=0 || n<=0 )
13 return;
14 cnt = 0;
15 i = 1;
16 value = sum - i*(i-1)/2;
17 while( value>=i ) // because a1 = ( sum - n*(n-1)/2 ) /n if this can be worked the value must >= n and because the element must >=1 you know the arr is from 1 to n
18 {
19 if( value%i==0 ) // the element is integer
20 {
21 first = value/i;
22 printf( "the %d arr: ",cnt+1 );
23 for( int j = first ; j<first+i ; j++ )
24 {
25 printf( "%d\t",j );
26 }
27 printf( "\n" );
28 }
29 i++;
30 cnt++;
31 value = sum - i*(i-1)/2;
32 }
33 printf( "cnt: %d\n",cnt );
34 }
35
36 int main()
37 {
38 int sum , n;
39 while( ~scanf("%d %d",&sum,&n) )
40 {
41 slove( sum , n );
42 getchar();
43 }
44 return 0;
45 }

因为 已经是第二天了 那就顺便给出今日的一句话 或是 一段话

today:

  you are
the apple of my eye.

  经历过你对我的喜欢,我就会觉得别人对我的喜欢,没法和你相比。被你喜欢过,很难觉得别人有那么喜欢我。

  i    
miss    you

bye    bye

一天一道算法题--6.9--数学题

时间: 2024-07-31 20:21:44

一天一道算法题--6.9--数学题的相关文章

一天一道算法题---6.26---二分查找

感谢微信平台---一天一道算法题----每天多一点进步-- 好累啊  现在在用win7自带的输入法 打起来真麻烦 快点把这2天的搞完就重装了 还是直接来源于----〉 待字闺中 分析 给定一个数组A,其中有一个位置被称为Magic Index,含义是:如果i是Magic Index,则A[i] = i.假设A中的元素递增有序.且不重复,请给出方法,找到这个Magic Index.更进一步,当A中允许有重复的元素,该怎么办呢? 没有重复元素的情况 一些同学在遇到这个题目的时候,往往会觉得比较简单.

一天一道算法题--6.25--无定义

感谢微信平台---一天一道算法题--每天多一点进步---- 其实今天我接下去补上的几题都来自---待字闺中 所以我就原封不动的将它的题目与分析搬过来了 原题 给定一个数组,我们可以找到两个不相交的.并且是连续的子数组A和B,A中的数字和为sum(A), B中的元素和为sum(B).找到这样的A和B,满足sum(A) - sum(B)的绝对值是最大的. 例如:[2, -1 -2, 1, -4, 2, 8]划分为A=[-1, -2, 1, -4], B=[2, 8], 最大的值为16 分析 如果没有

一天一道算法题---6.27---二分图

感谢微信平台---一天一道算法题---每天多一点进步--- Ah... last... 也很晚了 快2点半了 C罗也告别这届世界杯了  主要还是输给德国太多球了 美国也没赢 唉 还是来源于----> 待字闺中 原题 大家都知道facebook用户都是双向的好友,a是b的好友,那么b一定是a的好友,现在给定一个用户列表,其中有些用户是好友,有些不是,请判断,这些用户是否可以划分为两组,并且每组内的用户,互相都不是好友.如果能,请给出这个划分. 例子1: 用户:{1, 2, 3} 好友关系:1-2,

前端面试的一道算法题

(使用canvas解答) 下面说一个跟前端有点相关并且有点趣的一道算法题. 题目: 平面上有若干个不特定的形状,如下图所示.请写程序求出物体的个数,以及每个不同物体的面积. 分析 想要知道有多少个图形,想到的就是先获取图片中的每一个像素点然后判获取像素点的背景颜色(RGBA).想要获得图片中的每一个像素点,那就可以联想到使用h5的canvas.如下: 菜鸟教程中canvas的getimagedata方法http://www.runoob.com/tags/canvas-getimagedata.

一天一道算法题--6.19--二分搜索

感谢微信平台---一天一道算法题---每天多一点进步 这是昨天的 只贴下题目 == 再把今天的也是一样处理了   这2天 不想写 可能晚上会有改变吧.. problem: 给定一个最多包含40亿个随机排列的32位 二进制的无符号整数 找出不在文件中的数.显然 由于 2^32=4294967196大于4亿 所以缺少的数不止一个 现限制只能使用几个外部的临时文件和仅几百个字节的内存. ****************************** 过了明天 就没事了 =-= 一天一道算法题--6.19

一天一道算法题--6.13---计算几何

感谢微信平台---一天一道算法题---每天多一点进步 本来 想在世界杯之前 可以 开开心心地A了今天的算法题  .... 竟然是计算几何 我高数 那么渣....... 这题 先放着吧..... 哎.... 链接 还是一样先放出来 . touch me 平常这个点 再过会 就应该要碎觉了 今天 = 个揭幕战 累死我的节奏,,, 现在去做点什么呢........... 一天一道算法题--6.13---计算几何,布布扣,bubuko.com

一天一道算法题--5.29---动态规划之数塔

感谢微信平台:  一天一道算法题-------每天多一点进步----------- 这题的话 我就直接用我们自己Oj的题目了 戳我 好吧  如今看这题  是很简单  当时 是块被它搞崩溃了   因为 还不知道  dp 这个概念 现在有了这个概念   好多了  但还是 只能做做这种水 dp.... 多么悲伤的故事 这题 因为太水了   晚上 应该会去找个高质量的题来做的 如果你是dp刚刚学 这题真的很适合你 1 #include <iostream> 2 #include <cstring

每天一道算法题:数字二进制形式中1的个数

题目:请实现一个函数,属于一个整数,输出该数二进制表示中1的个数,例如把9表示成二进制是1001,有2位为1.因此如果输入9,该函数输出2. 可能的死循环陷阱 看完题目,相信大家很快就能想到一个解题思路:先判断整数二进制表示中最右边的一位是否为1,接着把输入的整数右移一位,此时原来处于从右边起的第二位被移动至最右边了,再判断是不是1,这样每次移动一位,直到这个整数变成0,即能够得到整数二进制表示形式中1的个数,而现在问题变为如何判断数字的最后一位为1,其实这个也很简单,只需要将数字与1做与运算,

一天一道算法题---6.16--最大独立集

感谢微信平台---一天一道算法题---每天多一点进步 这题 我都懒得贴了.... 因为 很巧合的是 我已经做过他了 我也详细地讲过自己的 颠沛 做这题时 要是 感兴趣 可以去找下 我的随笔 -- 前面的记录 a good news ---- 昨晚和晓爷 一起看的那个 蛮有意思的阶乘AC了  但还有个关于阶乘 17/0 的题 =-= 跑步去了 身体太虚 萎 ... 一天一道算法题---6.16--最大独立集,布布扣,bubuko.com

一天一道算法题---6.8--数学题

感谢微信平台:一天一道算法题---每天多一点进步----明天 考离散了 明天 高考结束了 看上去都是 好日子..... 上题目了: 求出用1 , 2 ,5这三个数不同个数的组合的和为100的组合个数. 如:100个1是一个组合:5个1+19个5是一个组合 OK:--- 几天折磨后 终于来了个 我能做的.... PS:  关于6.7--栈中O(1)实现min函数等的  应该会在今晚贴上.. 平台上关于这题的分析很到位: 设 1的个数为X 2的个数为Y 5的个数为Z 和为100的组合总数为cnt 1