zoukankan      html  css  js  c++  java
  • 一天一道算法题---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. 最容易实现的 应该是o(n^3) 1 2 5分别3层for .... 这样去做的话 在我们学校的C++期末考试 应该是可以拿分的(真讽刺...) 我这边就不给出它的伪代码了..

    2.

    x+2y+5z = 100;

    x + 5z = 100-2y; // 所以 x+5z一定是偶数

    z = 0    x = 100,98,96……,0  ---- 100以内的偶数

    z = 1    x = 95,93,91……,1 --- 95以内的奇数

    z = 2    x = 90,88,86……,0 --- 90以内的偶数

    …… …… ……

    z = 19   x = 5 3 1

    z = 20   x = 0  ---  数量为1

    这有2个很重要的计算公式:

    某个偶数m以内的偶数个数(含0)的计算公式为:

      m/2+1 = (m+2)/2

    某个奇数n以内的奇数个数的计算公式为:

      (n+2)/2

    so the cnt's sum:

    int cnt = 0;

    for( int i = 0 ; i<=100 ; i+=5 )

    {

      cnt+=(i+2)/2;

    }

    cout<<cnt<<endl;

    today:

      我自倾怀 君且随意

      有生之年 欣喜相逢

    just follow your heart
  • 相关阅读:
    前端- css
    前端- html -总结
    2016.9.15 黑客编程之无限启动
    2016.9.14 JavaScript入门之七面向对象和函数
    2016.9.13 JavaScript入门之六基础函数
    2016.9.1 JavaScript入门之五
    2016.9.9 网络工程师之路由器技术
    2016.8.14 网络工程师之网关协议
    2016.8.27 JavaScript入门之四
    2016.8.22 JavaScript入门之三
  • 原文地址:https://www.cnblogs.com/radical/p/3775942.html
Copyright © 2011-2022 走看看