HDU 5312(規律 數學)

2021-07-04 04:31:48 字數 1043 閱讀 3135

思路:這個題看上去是乙個貪心, 但是這個貪心顯然是錯的. 事實上這道題目很簡單, 先判斷1個是否可以, 然後判斷2個是否可以. 之後找到最小的k (k > 2)k(

k>2)

, 使得(m - k) mod 6 = 0(m

−k)m

od6=

0即可.

證明如下: 3n(n-1)+1 = 6(n*(n-1)/2)+13n

(n−1

)+1=

6(n∗

(n−1

)/2)

+1, 注意到n*(n-1)/2n∗

(n−1

)/2是三角形數, 任意乙個自然數最多只需要3個三角形數即可表示. 列舉需要k

k個, 那麼顯然m=6(km=

6(k個三角形數的和)+k)+

k, 由於k \ge 3k≥

3, 只要m-km−

k是6的倍數就一定是有解的.

事實上, 打個表應該也能發現規律.

兩邊向中間找掃瞄的時候落了等號錯了好多次,忘了數相等的時候也可以,最後找最小的k,直接取餘就行,最少是從3開始的。

#include #pragma comment(linker, "/stack:1024000000,1024000000")

#define inf 9999999999

#define mem(a,b) memset(a,b,sizeof(a))

using namespace std;

typedef unsigned long long llu;

typedef long long ll;

const int maxd=18258+5;

///*************************

int s[maxd];

int m;

void table()

return false;

}int main()

printf("%d\n",(m-3)%6+3);}}

return 0;

}

hdu 5312 Sequence 數學推導

解法 這個題看上去是乙個貪心,但是這個貪心顯然是錯的.事實上這道題目很簡單,先判斷1個是否可以,然後判斷2個是否可以.之後找到最小的整數k k 2 使得 m k mod 6 0即可.證明如下 3n n 1 1 6 n n 1 2 1,注意到n n 1 2是三角形數,任意乙個自然數最多只需要3個三角形...

數學 找規律HDU 1030

題目難點在於找到規律 根據公式求解 從三個角度看這個圖,level,left,right,如下圖,題目的答案就是3個圖上2個點之間的層數的高度差之和。例如 6 12 level 1,left 1,right 1,答案就是3。例如 3 12 level 2,left 1,right 2,答案就是5。i...

hdu 5106 組合數學 找規律

給定n和r,要求算出 0,r 之間所有n onebit數的和,n onebit數是所有數字中1的個數。對於乙個n bit數,可以根據與r最高不同位的位置分成幾類。比如r 100100010,可以分成0 xx,1000 xx,10010000x三類。x處可任取0或者1。x的個數為n,x中1的個數為k。...