我用 python 運算,答案是 -86: f = lambda n: 1 if n == 1 else f(n >> 1) if not n & 1 else f(n >> 1) ** 2 - 2 if __name__ == "__main__": print(f"answer: {sum(f(n) for n in range(1, 101))}") answer: -86
def fun(n): if n == 1: return 1 if n % 2 == 0: return fun(n/2) elif n % 2 == 1: return fun((n-1)/2)*fun((n-1)/2) - 2 sum = 0 for i in range(1, 100+1): sum = sum + fun(i) # print(fun(i)) print(sum) 寫程式的人的解法
As an engineer, as soon as I get to f(8) I can't be bothered to prove it rigorously, but I guessed that the powers of 2 is going to be 1 (2,4,8,...) and every other number that could be written as 2n+1 or 2* odd number = -1 🤣 but the answer proved me right😇
這題對於資工系的同學來說,應該是不難的
但對我來說,會很執著的想要找出關係式
但嘗試往往是最基本的方法
受教受教了!
想看曹老師解我出的題目,可以來我這裡等一下,這兩天就會上片!
謝謝李祥老師!
分类讨论就可以写成高中程度的关系式。
如果要通用的话,用三角函数应该简明一些
數學系真的就會想找出S(n)… 😂
@@user-gt5hg9mg7t 為什麼這個水平不能教人? 他這水平有很爛嗎 有爛到不能教人的地步嗎?你純粹只是為酸而酸吧
@@corneliusrobert4812 兩分鐘解決的題目 他用了多久?
函數表示了範圍1到100內,2的次方數會的函數值都是1(1,2,4,8,16,32,64共7個),而剩餘的數字則是因為因數中不全只有2,所以皆為-1。於是答案就是(100-7)*-1+7*1=-86。
😮😮🤯🤯
這題大概想了三分鐘就算出來了,其實很有趣,有從二進制得到一點想法
f(2n) = f(n),所以f(k*2^p)=f(k),其中k為奇數,p為任意正整數
由此可知,當k=1,所有f(2^n)=1,n為任意非負整數
對於1以外的奇數,f(2n+1) = f(k)^2-2,其中k為不大於n的正奇數
由於f(1)=1,經過一次f(2n+1)就會變成-1,此後無論進行幾次都會維持-1
因此可知除了f(2^n)以外的值全部都是-1
100以內的f(2^n)有[log_2(100)] + 1 = 7個
因此總和為 -(100 - 2 * 7) = -86
好喔 真棒
好喔 好棒呢
感覺這樣解才是真的搞懂題目的數學意義,兩個老師的解法基本上都是在碰運氣
@@jackypan2038但我覺得。解得出來的解法都是好方法
@@chen-chiachen3559 開心就好
我自己是用二元樹的方式畫
root就是1,1左邊節點是2 右邊節點是3
2左邊4 右邊5,3左邊6 右邊7
照這樣依序排下來
這樣子任選一個節點,左邊的子節點就會是自己的兩倍,右邊的子節點就是自己的兩倍+1,剛好符合題目敘述
然後也能很快就發現只有1的左節點那一整條是1,其他都是-1
但這個題目第一眼怎麼看出要用tree來做
@@生活空間樹的構成可以使用從1開始索引的array
第n個節點的左節點為2n
右節點為2n+1
詳情可見二元樹的wiki
@@osasosas4313 我知道binary tree 我是問這題是看到2n 跟2n+1聯想到node index 所以選擇先用binary tree觀察規律嗎
@@生活空間 沒意外的話是吧
剛好左邊一種規則右邊一種規則阿
這題目出得真好...很有鑒別度
這題簡單,找到規則後,可以寫一個程式來解題
除了f(1)=f(2)=1;
其餘
F(奇數)=>-1
F(偶數)=>括號內數字重複除以2後最後的數字為奇數=>-1 反之=>1 以此類推~~~
f(2)=f(1)=1 不符合你說的規則。
其實規則就是f(2^n次方)的數都是1 其他都是-1
@@voidxvoid 你說的對 因為很common sense 我忘記提到了 感謝~~
兩個老師夢幻連動 太棒了吧
將f(2n+1)=[f(n)-1][f(n)+1]-1, 配合前幾項,可以知均為-1, 1/2/4/8/.../64則是1
我用 python 運算,答案是 -86:
f = lambda n: 1 if n == 1 else f(n >> 1) if not n & 1 else f(n >> 1) ** 2 - 2
if __name__ == "__main__":
print(f"answer: {sum(f(n) for n in range(1, 101))}")
answer: -86
好厲害!😆
😮😮👍👍
我覺得這個影片很有意義,能知道即使是老師、教學經驗很多,在遇到新題目也是多方嘗試。也看出不同背景訓練出來的解題思維的不一樣。
1,2,4,8,16,32,64都是正一。所以是2進位數。我希望我猜的沒錯。
從關係式可以看出f(n) ∈ {1, -1}
然後就能得到1以外的奇數都是-1
因為f(2n + 1) = f(n)² - 2 ≡ -1
接著就能看出2的冪次以外也都是-1
因為所有非2的冪次的偶數都能寫成(2n + 1) * 2^k,而f((2n + 1) * 2^k) = f((2n + 1) * 2^(k - 1)) = … = f(2n + 1) = -1
我在轉換的時候發現,第一條式子和第二條式子都是奇偶互換,但是其值-1怎麼換都還是-1,只有F(2^n)的數會永遠等於1,用這條關係式甚至可以推到F(1000...),只要能找到1、2、4、8、16、32、64、128、256...等2^n的數的數量即可,但假如考試真的出個F(10000)我估計也不會有耐心去試
演算法帶我來看你
def fun(n):
if n == 1:
return 1
if n % 2 == 0:
return fun(n/2)
elif n % 2 == 1:
return fun((n-1)/2)*fun((n-1)/2) - 2
sum = 0
for i in range(1, 100+1):
sum = sum + fun(i)
# print(fun(i))
print(sum) 寫程式的人的解法
遞歸定義,然後, 新的數一定要嘛等於舊的數 , 要嘛等於舊的數平方減2。 那麼能夠做出來的數只有一開始只有1.
1 可以做出1, 以及 1^2 - 2 = -1. 那麼, 現在有1, -1 了, 1, -1 能做出來的數是, 1, 1^2-2=-1, -1, (-1)^2 -2 = -1, 還是只有1, -1.
所以只可能是1, -1兩種。 找出誰是1, 誰是-1, 就好了。
我想看李祥出題目,給曹老師解題
這兩天會上片
總算有一題我也看出規律的....我是寫程式的,我的職業直覺就是遞迴一直套
true
終於有一題我會做惹😂
所以說考試不應該限時間 因為數學就像走迷宮 最開始走對或走錯有運氣成分的 應該讓學生有充分的時間試錯
如果不限時間,就會出現用暴力解而答對的學生,但他們希望的學生是思維靈敏而不是用最原始方法的學生。
沒有限時間的解題就是以後勵志做數學家
應該要限時間 這題兩個老師都用碰運氣的方法硬試,其實答對了也不懂題目的意義
这题还蛮简单的,因为只要去做了,基本都能求出f(n)的通项,证明也不难。
As an engineer, as soon as I get to f(8) I can't be bothered to prove it rigorously, but I guessed that the powers of 2 is going to be 1 (2,4,8,...) and every other number that could be written as 2n+1 or 2* odd number = -1 🤣 but the answer proved me right😇
我自己解的話,因爲f(x), x不是2^n就是其他,所以如果x=2^n的話那就是1,不是的話要麽是x=k*2^n 要麽 x=2n+1,如果x=k*2^n的話那麽k一定是基數,所以f(x)=f(k)=f(2n+1),所以只要x不等於2^n就一定能寫成f(2n+1)的形式,而算一算的話f(2n+1)=-1,所以得出f(x)={x=1, x=2^n or x=1; x=-1, otherwise,所以S(n)=floor(log_2(n))+1-(k-[floor(log_2(n))+1]),化簡一下就能得到S(n)=2floor(log_2(n))-k+2,用n=100算一下就是-86
-86吧,除了2^k = 1 外其他都是-1,用MI可以證明
一早醒來 解一個神清氣爽 感覺會像是數A學測題
来看一下2位老师的风采🎉
F(1)=f(2)=f(4)=f(8)=f(16)=f(32)=f(64)=1、共有7個1、其他f(n)最終必定可以簡化成f(1、2、4、8、16、32、64)的平方再減2、所以一定是-1、-1總共有(100-7) =93個、1總共有7個,所以總和是-1x93+7=-86、我是脫離高中已經26年的醫師😂
將 1 ~ 100 以 o * 2^i (o 是 odd) 的形式來分組:
1, 2, 4, ..., 64
3, 6, 12, ..., 96
5, 10, 20, 40, 80
...
99
同組的各數有相同的函數值。
然後發現 f(o) = -1 對 o = 3, 5, 7, ..., 99
又 f(1) = 1
所以是 -100 + 7 * 2 = -86。
改進:利用二元樹來進行 bottom-up 的建構會更方便。
再改:將 n 以二進位來表現,由左而右掃描。
有缺漏,K為奇數等於1 第一個2^i等於1
可你的2×n不一定是2^n阿
考慮不夠周全喔
@@slsamg640i 看不懂兩位在說什麼耶
1 ~ 100 都考慮到了
@@維-n5x 6 10那些請說明
@@gavin0126 原文增加一些解釋,你再看看。
看前先留言點讚👍🏻
報告老師我先爆開 然後觀察到在2的次方時值為1 其餘為-1 結果就算出來了😀
合併 f(1)+f(2)+...+f(50) 和 [f(1)]^2 + [f(2)]^2 + ... + [f(49)]^2 -98 的時候,怎麼只剩下49項了, f(50) 去哪了 🤔?
因第一個f(1)沒有理會到😂,拆單雙時,第一行由f(2)開始計算,第二行由f(3)開始計算
def f_memoized(n, memo={}):
if n in memo:
return memo[n]
if n == 1:
return 1
elif n % 2 == 0:
memo[n] = f_memoized(n // 2, memo)
else:
memo[n] = f_memoized(n // 2, memo) ** 2 - 2
return memo[n]
# 初始化總和為0
total_sum = 0
# 直接計算所有f(n)的和
for i in range(1, 101):
total_sum += f_memoized(i)
print("f(1) + f(2) + ... + f(100) =", total_sum)
🤯🤯😮😮
我選擇直接寫程式解😂
想看您找莊小寬老師也是出難題的解答。
第一眼看到標題還以為是矩陣快速冪
台美老師交流。這系列我只真的會解這一題。😅😅
g(x)=f(y) iff countbin(y)=x
然後就沒幾個了
如果[f(n)]²+[f(n)]-2=[f(n)+2][f(n)-1]
這題的數字用國中方法比較簡單,李祥老師的方法反而燒腦又慢。
😲😲
老高的TEE嗎?
應該是f(50)沒加到
我見到都投降了﹗
求f(1)+f(2)+f(3)+f(4)=
唧唧復唧唧
1 1 - 1 1
-86
一堆數學大師來了😂 笑死
1,2,4,8,16,32,64,這七項都等於1,其他都是-1
總和=7*1-93*1=-86,我不知道有什麼好算錯的
為什麼2的次方數要乘上2
因為一開始當成每個都是-1,100個-1之後把不是-1的加回來
不然93個-1加上7個1也是-86
@@罪七當下只有想到-1乘上100 +7 沒想到這7個數原本就不是-1還得多算一次. 感謝
Binary tree
你還沒看過的「台美數學老師交流因式分解round2 」👉 ua-cam.com/video/1bfkvcw14PY/v-deo.htmlsi=o-TGpjccrheboX4t
我觉得没有这么复杂吧,n为2的次幂都等于1,n为奇数时等于-1。-93+7=-86
这道题在大陆高考中最多是道填空题。
有思考盲區
你沒有考慮到
當n不為2次冪 且 當n不為奇數 例如n=10 n=12 ...
這一類的函數值=-1是需要證明的
我同意這題難度真的不高
@@user-user-user-user-user-888偶數都可以拆成2的次冪*奇數,沒有這種問題
应该是含有奇数因数@@雪羽夜-u5b
f(2n+1)+f(2n)=f(n)+f(n)^2-2
f(2)+f(3)...+f(101)=sum(f(1)+f(2)...+f(50))-50=sum(f(1)+f(2)...+f(25))-50-25+2=sum(f(1)+f(2)....f(12))-50-25-12+2+1=sum(f(1)+f(2)...f(6))-50-25-12-6+2+1+2=f(1)+f(2)+f(1)+f(6)-50-25-12-6-2+2+1+2=-88
f(1)+f(2)+...+f(100)=-88+f(1)-f(101)=-86
超簡單
果然沒辦法做現場的 只能拍影片
-87? 有人在偷罵喔 呵呵
不是喔 lol
😉
87=笨
則(-87)=(-笨)
又(-笨)=聰明
所以(-87)=聰明
😬😬👍👍
這題超級簡單