fj和他的奶牛們喜歡玩一種數字遊戲:他們按某種順序在紙上寫下1~n(1<=n<=10)之間的所有數,然後把相鄰的數字相加,得到乙個比原數列少一項的數列。對新數列重複上述的操作,直到整個數列只剩乙個數為止。n=4的時候,整個遊戲的流程可能如下所示:
3 1 2 4
4 3 6
7 9
16 奶牛們很快不滿足於這種簡單的遊戲,於是她們揹著fj玩起了另乙個版本:對於給定的n以及最後剩下的數,求初始的數列。不幸的是,由於fj的數學學得不是很好,這個遊戲對於他來說是有些難度的。
請你寫個程式來幫助fj玩這個遊戲,以保持他在奶牛們心中的地位。
第1行: 包括2個用空格隔開的整數:n和這n個數字經過運算後的最終結果
第1行: 輸出乙個完整包含1~n的長度為n的數列,它經過若干次相鄰數加和的運算後能夠得到輸入中要求的結果。如果有多個數列符合要求,輸出字典序最小的乙個。也就是說,數列中位置靠前的數字要盡量小。
4 16
3 1 2 4
其他的數列經過以上運算,可能也能得到相同的結果,比如說3 2 1 4,但所有符合條件的數字串中,3 1 2 4是字典序最小的乙個。
以字典順序全排列,每得出乙個就模擬算出是否與輸入的結果相等,如果相等就直接可以結束了。
var
a,b:array[0..20] of longint;
i,j,n,m,x,y,temp,min,ans,sum:longint;
begin
readln(n,m);
for i:=0
to n do
a[i]:=i;
while a[0]=0
dobegin
b:=a;
for i:=1
to n-1
dobegin
for j:=1
to n-i+1
do b[j]:=b[j]+b[j+1];
end;
if b[1]=m then
begin
for i:=1
to n do
write(a[i],' ');
halt;
end;
j:=n;
while a[j]1] do
j:=j-1;
min:=j;
for i:=j+1
to n do
if (a[i]>a[j-1]) and (a[i]then min:=i;
temp:=a[j-1];
a[j-1]:=a[min];
a[min]:=temp;
for x:=j to n-1
dofor y:=x+1
to n do
if a[x]>a[y] then
begin
temp:=a[x];
a[x]:=a[y];
a[y]:=temp;
end;
end;
end.
Jzoj 2032 數字遊戲
按某種順序在紙上寫下1 n 1 n 10 1 n 1 n 10 1 n 1 n 1 0 之間的所有數,然後把相鄰的數字相加,得到乙個比原數列少一項的數列。對新數列重複上述的操作,直到整個數列只剩乙個數為止。n 4 n 4n 4的時候,整個遊戲的流程可能如下所示 3 1 2 4 4 3 6 7 9 1...
JZOJ 2032 數字遊戲
description fj和他的奶牛們喜歡玩一種數字遊戲 他們按某種順序在紙上寫下1 n 1 n 10 之間的所有數,然後把相鄰的數字相加,得到乙個比原數列少一項的數列。對新數列重複上述的操作,直到整個數列只剩乙個數為止。n 4的時候,整個遊戲的流程可能如下所示 3 1 2 4 4 3 6 7 9...
數字DP 數字遊戲
科協裡最近很流行數字遊戲。某人命名了一種不降數,這種數字必須滿足從左到右個位數字呈現小於等於的關係,如123,446.現在大家決定玩乙個遊戲,指定乙個整數閉區間 a,b 問這個區間內有多少個不降數。輸入多組測試資料。每組只包含兩個數字a和b 1 a,b 2 31 每行給出乙個測試資料的答案,即 a,...