Re: [問題] 請問要如何用C++ 設定f(a*b)=f(a)*f(b)?
※ 引述《aleyukimo (aleyu)》之銘言:
: 最近在算一個題目
: 例如
: f(a)=b
: f(b)=c
: f(c)=d
: f(d)=e
: f(e)=a*b
: f(a*b)=f(a)*f(b)=b*c
: ......
: 遇到b*b*c=c
: (a*b*c*d)*(b*d*f)=a*c*f
: ..........
: 這裡的abcde不一定是實數,他只是個符號
: 例1
: a=10000
: b=01000
: c=00100
: d=00010
: e=00001
: ac=a*c=10100
: cde=00111
: (ac)*(cde)=ade=10011
: 例2
: 這裡有5個數(a,b,c,d,e) 可以看成內積
: a=(-1,1,1,1,1)
: b=(1,-1,1,1,1)...
: e=(1,1,1,1,-1)
: 此時ac=a與c的內積=(-1,1,-1,1,1)
: 但加法不行...
: 要求滿足f^n(a)=a的n的最小值
: n是指合成函數
: 如f^2(a)=f(f(a))=a
: f^3(a)=f(f(f(a)))=a
: 因為要有很多了例子要跑 如f(e)=a*c*d
: 或者不只有a b c d e5個數 也有6個數....
: 不知道要怎麼用C++去設定函數?
: 麻煩各位給個頭緒
: 我已經想了很久 好幾天睡不太好
: 謝謝
手推導的結果是:
vector_length min_n
2 3
3 7
4 15
5 21
6 63
f^vector_lenth(a) = a * f(a)
最短循環數 min_n 顯然跟 (2^vector_length - 1 ) 有關, (0,0...,0)
無法循環
f 是 shift & round-back2
* 是 vector bit XOR
好玩, 可以介紹用途嗎 ?
※ 編輯: ggg12345 來自: 140.115.4.12 (08/10 11:44)
討論串 (同標題文章)