hdu 1163 求n n位根

2022-11-24 21:32:01 字數 453 閱讀 6687

數學題

剛開始思路:

求n的倍數,能推出相應位根程週期性變化,比如:(56)和(29)位根都是2,n*(56) 和 n*(29)位根都是n*(2),

由於位根為1位,所以週期最大是10,但n最大隻能推倒到32,觀察能看出規律,整個n程週期性變化,於是果斷猥瑣

打表a之(中途打錯,貢獻2wa - -)

後google看演算法,竟可數學推出,ym啊

以下為摘數學演算法:

=10000*a*a+2000*a*b+100*b*b+200*a*c+20*b*c+c*c

=a*a+2*a*b+b*b+2*a*c+2*b*c+c*c

=(a+b)^2+2*c*(a+b)+c*c

= (a+b+c)*(a+b+c)

int main()

;//暴力推出

while(cin>>n && n)

{ cout<

求X N 2 N 4 N 8 N 16

公式中的n是自然數,除法是整數除法 向下取整 這個公式是從 程式設計之美 階乘一章摘來的,除了硬算之外,裡面給出了另一個答案 x n n的二進位制表示中1的數目 但是書中用11011為例證明這個結論太複雜了,看不懂,我想了另外一個解讀 n n的二進位制最低位 n 2 n 2 n的二進位制最低位 n ...

求1 2 n 位運算

求1 2 3 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 我發現網上的做法都很神,各種理由編譯的巧妙辦法,就能間接地利用迴圈來解決,建構函式 遞迴什麼的。想了好久,腦子裡只有位運算。終於折騰出來了。真傻,我真的沒用迴圈。1 i...

Hdu 1042 N

題目連結 這個題資料給到了十的四次方的階乘,明顯用普通 int 或者 long long 是沒法做的。於是可以考慮兩種方法 1 用一個巨大的陣列儲存下來結果的每一位,for 迴圈模擬乘法即可,要注意的是最高位的進位,中用變數 c 記錄了進位情況,並用 while 迴圈對進位進行了處理。1 inclu...