思路:這個題看上去是乙個貪心, 但是這個貪心顯然是錯的. 事實上這道題目很簡單, 先判斷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。...