題目描述
gardon 昨天給小希布置了一道作業,即根據一張由不超過 5000 的 n(3<=n<=100)個正整數組成的數表兩兩相加得到 n*(n-1)/2 個和,然後再將它們排序。例如,如果數表裡含有四個數 1,3,4,9,那麼正確答案是 4,5,7,10,12,13。小希做完作業以後出去玩了一陣,可是下午回家時發現原來的那張數表不見了,好在她做出的答案還在,你能幫助她根據她的答案計算出原來的數表麼?
輸入包含多組資料,每組資料以乙個 n 開頭,接下來的一行有按照大小順序排列的 n*(n-1)/2 個數,是小希完成的答案。檔案最後以乙個 0 結束。
假設輸入保證解的存在性和唯一性。
輸出對於每組資料,輸出原來的數表。它們也應當是按照順序排列的。
樣例輸入
44 5 7 10 12 13
45 6 7 8 9 10
0樣例輸出
1 3 4 9
2 3 4 6
ac**
#includeusing namespace std;
int n, n, key, sum[5000], ans[101], minn;
int look(int s) //尋找第乙個字首為s且字尾不為key的sum[i]的i
if (sum[low] / 1000 != s)low = high;
if (sum[low] / 1000 != s)return 0;
while (sum[low] % 1000 == key && low < n && sum[low + 1] / 1000 == sum[low] / 1000)low++;
if (sum[low] % 1000 == key)return 0;
return low;}
bool add(int d)//新增ans[d],更新sum
while (sum[minn] % 1000 == key)minn++;
ans[d] = sum[minn]/1000 - ans[1];
if (!add(d))return false;
return solve(d + 1);}
int main()
for (key = 3; key <= n; key++)
if (!flag)continue;
minn = 1;
if (solve(key+1))break;
} }return 0;
}
杭電1270 小希的數表
gardon昨天給小希布置了一道作業,即根據一張由不超過5000的n 3 n 100 個正整數組成的數表兩兩相加得到n n 1 2個和,然後再將它們排序。例如,如果數表裡含有四個數1,3,4,9,那麼正確答案是4,5,7,10,12,13。小希做完作業以後出去玩了一陣,可是下午回家時發現原來的那張數...
hdu 1270 小希的數表
思路 一定有sum 1 num 1 num 2 sum 2 num 1 num 3 但是sum 3 不知道是由num 1 num 4 還是num 2 num 3 這就需要列舉一下了。然後算出num 1 num 2 num 3 的值。並從sum中剔除他們,這是最小的乙個一定是num 1 num 4 再...
小希的迷宮
description 上次gardon的迷宮城堡小希玩了很久 見problem b 現在她也想設計乙個迷宮讓gardon來走。但是她設計迷宮的思路不一樣,首先她認為所有的通道都應該是雙向連通的,就是說如果有乙個通道連通了房間a和b,那麼既可以通過它從房間a走到房間b,也可以通過它從房間b走到房間a...