ガウスののしき


ガウスののしき


先生は学生を静かにするために、また1から100の問題を出しました.
ガウスは一瞬にして答えを出した!
1から100を加え、順番に100から1を加える
(1+100,2+99,3+98,4+97 ... 100+1)
では、数字ごとに101を100個加算します.
合わせて10100(101は100個なので)、
元の1から100までの数をもう一度加えたようです.
10100を2で割ると5050になります.

どのように使いますか。


n(x+y)/2はx,yと表す
(y-x)+1)(x+y)/2.
(xとyの関係はx

  • プログラマの2つの整数の合計
  • 2つの整数a,bが与えられる.
    両者のどちらが値段が高いか分からない.
    2つの整数の間の数字の加算値を求めます
    function solution(a, b) {
      return ((Math.abs(a - b) + 1) * (a + b)) / 2;
    }
    aとbの大きな値が何なのか分からないので、Math.abs()を使用しました.
  • プログラマー不足金額
  • を計算
    使用料(price)、保有金額(money)、使用回数(count)を提供します.
    n回以上使用すると、価格がn倍になります.
    moneyを持ってcountを利用すると、足りない金額を求めます.
    (足りない場合は0を返します)
    function solution(price, money, count) {
      const result = (price * count * (count + 1)) / 2 - money;
      return result > 0 ? result : 0;
    }
    例:price=3、money=20、count=4
    1回使用時、20(money)-(price*count(1)=17
    2回使用時、17(money)-(price*count(2)=11
    3回使用時、11(money)-(price*count(3)=2
    4回使用する場合、2(money)-(price*count(4)=-10
    足りないお金は10です.
    式ではresult=(3*4*5)/2-20==-10
    もう一度やってみよう
    price = 5, money = 43, count = 18
    result = 5 *18 *19/2 - 43 === 812

    他の関数に適用した場合と同じ値