這題有點卡常的味道。。。
正解找規律+高精度。
經過手推後發現樣例:
10 2↙
1 2 4 8
3 65 10
由於m=2,所以每兩個一組,共4組。
哇,這就是規律。
第一次將n除以2m-1,而後找到1~n中奇數的個數並新增到ans。
之後每次都將n除以2m,而後找到1~n中奇數的個數並新增到ans。
最後輸出即可。
上標(我壓了8位™都還跑了2069ms,重點是我用了很多優化啊(沒有吸氧)):
#include
#include
#include
#define ll long long
#define mo 100000000
#define rg register int
using namespace std;
ll a[
1310
],ans[
1310
],b[
1310];
char c,s[
10030];
int t,m,k;
void
divide
(int div)
void
inans()
intmain()
divide(1
<;inans()
;if(a[1]&
1)while
(a[0])
}printf
("%lld"
,ans[ans[0]
]);for
(rg i=ans[0]
-1;i>
0;i--
)printf
("%08lld"
,ans[i]);
puts(""
);}return0;
}
NOI2015模擬YYT 傳送
你在乙個有n 個點的環上,環上點按逆時針順序標號為0 到n 1。你一 開始在0 號點。你在每一回合可以使用k 種傳送中的一種,第i 種傳送會將你 按逆時針方向移動ai 個點。有m 個限制條件,對於每個限制條件 xi yi 要 求不能在第xi 步之後在yi 號點上。你要求出經過l 步之後在0 號點的方...
NOI2015模擬9 9 取石子(博弈)
個人覺得這種題要不就切掉要不就爆0了,所以我們要大膽地猜結論,然後去證明。這也是一種思路吧 因為一次只能取走一顆石子,因此對於所有石子,我們能進行的操作總數就是 s 石子總數 石子堆數 1 我們可以感性地先猜一猜,如果考慮最簡單的情況一堆的話,那麼如果s是奇數那麼很顯然先手必勝,若是偶數那麼先手必敗...
NOI2015 小園丁與老司機
給出n棵樹,從原點開始,每次可以在左 右 上 左上 45 右上 45 五個方向中選擇乙個,然後一直向這個方向走,直至走到一棵未經過的樹,然後繼續選擇方向,直至5個方向都不存在未經過的樹。現在要經過盡可能多的樹,輸出最多可能經過的樹的數量以及任意一條路徑。現在定義向上 左上 45 右上 45 三個方向...