這道題我是用數學方法做的……手算的~
我承認是從答案推導了驗證了手算答案的正確性……
顯然這道題就是用剔除的方法。
顯然2的出現有2^2,2^3,2^4,...,2^100
3的先跳過,看4的
4 = 2^2,出現了2^4,2^6,2^8,...,2^200,其中有多少是和2的重複呢?顯然是100/2 - 2 +1
100/2是再算偶數個數,(-2+1)是因爲從^2開始2,3,4,...,50,總共49個數。
3和9也是這個關係
10和100也是這個關係
2和8也是這個關係,32個重複
以此類推,可以算出
2:49+32+24+19+15
3:49+32+24
4:49+32
5:49
6:49
7:49
8:49
9:49
10:49
後面的平方都大於100,不必考慮了。
這些加起來是619,用99*99(總數)-619 = 9182.這個比正確答案少了一個!哪裏多減了?
顯然16在2^4和4^2處都進行了重複處理
32,64,81也是……
這腫麼辦……
那我們一點點容斥原理算吧……
先分析16:2^4處,-24, 4^2處,-49。2^4的24個全部重複……
想到8還有跟16重複的部分……
我實在不想寫了……
4 --> 49
8 --> 49
9 --> 49
16 --> 58*****
25 --> 49
32 --> 48
36 --> 49
49 --> 49
64 --> 62*****
81 --> 58*****
100 --> 49
It seems that all squares have 49 occurences and all fourth powers
have 9 occurences.
其實有所不同的就上面加星號的幾個……手算真的能出來……
直接上python吧……
python實在太過強大……哎……python太強大……太……強大……強……大……
s = {1}
for a in range(2, 101):
tmp = a
now = 0
for b in range(2, 101):
tmp *= a
if tmp in s:
pass
else:
now += 1
s.add(tmp)
print(a, now)
print(len(s))
這個代碼就是爲了驗證我的想法寫的……重複的並不難找……但是問題就是……不好說明……還是直接代碼吧……