2032 數字遊戲 Standard IO

2021-07-16 15:09:26 字數 1515 閱讀 9017

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,...