<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="zh-tw"> 
<title>NPSC 補完計劃</title> 
<link rel="alternate" type="text/html" href="http://www.tcgs.tc.edu.tw/blog/index.php?blogId=2" /> 
	 
	<modified>2009-12-09T08:00:10+0800</modified> 
<tagline>這是一個討論 NPSC歷年試題解法的網站，
歡迎有興趣的同學一起加入。</tagline> 
<generator url="http://www.lifetype.net/" version="1.0.2">LifeType</generator> 
 
<copyright>Copyright (c) sagit</copyright> 
  
 <entry> 
 <id>tag:www.tcgs.tc.edu.tw,2009-12-09:244</id>
 <title>請改到本站新網址</title> 
 <link rel="alternate" type="text/html" href="http://www.tcgs.tc.edu.tw/blog/index.php?op=ViewArticle&amp;articleId=244&amp;blogId=2" /> 
  
 <modified>2009-12-09T08:00:10+0800</modified> 
 <issued>2009-12-09T08:00:10+0800</issued> 
 <created>2009-12-09T08:00:10+0800</created> 
 <summary type="text/plain">  本站已停止更新，請改到本站之新網址&amp;nbsp;   新NPSC補完計劃：    http://www3.tcgs.tc.edu.tw/npsc/index.php   &amp;nbsp;  </summary> 
 <author> 
  
 <name>sagit</name> 
 <url>http://www.tcgs.tc.edu.tw/blog/index.php?blogId=2</url> 
 <email>sagit@tcgs.tc.edu.tw</email> 
</author> 
<dc:subject>
一般 
</dc:subject> 
 <content type="text/html" mode="escaped" xml:lang="zh-tw" xml:base="http://www.tcgs.tc.edu.tw/blog/index.php?blogId=2"> 
 &lt;p&gt;&lt;font size=&quot;3&quot; color=&quot;#ff0000&quot;&gt;本站已停止更新，請改到本站之新網址&amp;nbsp;&lt;br /&gt;&lt;/font&gt;&lt;font size=&quot;3&quot; color=&quot;#ff0000&quot;&gt;新NPSC補完計劃：&lt;br /&gt;&lt;/font&gt;&lt;a href=&quot;http://www3.tcgs.tc.edu.tw/npsc/index.php&quot;&gt;&lt;font size=&quot;3&quot; color=&quot;#ff0000&quot;&gt;http://www3.tcgs.tc.edu.tw/npsc/index.php&lt;/font&gt;&lt;/a&gt;&lt;font size=&quot;3&quot; color=&quot;#ff0000&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt; 
</content> 
</entry> 
 
 <entry> 
 <id>tag:www.tcgs.tc.edu.tw,2009-12-08:181</id>
 <title>NPSC 題型分析</title> 
 <link rel="alternate" type="text/html" href="http://www.tcgs.tc.edu.tw/blog/index.php?op=ViewArticle&amp;articleId=181&amp;blogId=2" /> 
  
 <modified>2009-12-08T08:00:14+0800</modified> 
 <issued>2009-12-08T08:00:14+0800</issued> 
 <created>2009-12-08T08:00:14+0800</created> 
 <summary type="text/plain"> 這裡將 2005 年以來的 NPSC 題目做個簡單的分類，希望對各位同學有所幫助。(註：這些題目可能不只一種解法，僅以最簡單的一種去分類。) ...</summary> 
 <author> 
  
 <name>sagit</name> 
 <url>http://www.tcgs.tc.edu.tw/blog/index.php?blogId=2</url> 
 <email>sagit@tcgs.tc.edu.tw</email> 
</author> 
<dc:subject>
一般 
</dc:subject> 
 <content type="text/html" mode="escaped" xml:lang="zh-tw" xml:base="http://www.tcgs.tc.edu.tw/blog/index.php?blogId=2"> 
 &lt;p&gt;這裡將 2005 年以來的 NPSC 題目做個簡單的分類，希望對各位同學有所幫助。(註：這些題目可能不只一種解法，僅以最簡單的一種去分類。)&lt;/p&gt;&lt;p&gt;一、暴力法、直解：暴力法是把所有的情況列出來一個一個判斷，通常是用迴圈來處理。(這邊不考慮要使用 BFS、DFS 的情況)；而直解是依照題意直接做就可以，(這邊不考慮模擬題的類型)，這兩種都是不太需要用什麼特別的演算法即可解決。&lt;/p&gt;&lt;ol&gt;&lt;li&gt;2005 初賽 - 題目 F - 密碼安全設定 (字串處理)&lt;/li&gt;&lt;li&gt;2005 決賽 - 題目 C - 節約尺&lt;/li&gt;&lt;li&gt;2005 決賽 - 題目 E - 智慧型單字查詢 (字串處理)&lt;/li&gt;&lt;li&gt;2006 決賽 - 題目 H - PS3&amp;nbsp;&lt;/li&gt;&lt;li&gt;2007 初賽 - 題目 D - 打不倒的空氣人 (字串串接)&lt;/li&gt;&lt;li&gt;2007 決賽 - 題目 C - 小姐，我認識妳嗎？ (NPSC 計分模擬)&lt;/li&gt;&lt;li&gt;2008 初賽 - 題目 B - 下雨天&lt;/li&gt;&lt;li&gt;2008 決賽 - 題目 B - 幼稚國王去旅行&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;二、數學解：比直解的題目複雜一些，需要用到一些數學推導或公式。&lt;/p&gt;&lt;ol&gt;&lt;li&gt;2005 決賽 - 題目 G - 陽數 (位元層次思考)&amp;nbsp;&lt;/li&gt;&lt;li&gt;2006 初賽 - 題目 C - 幼稚國王的獎賞 (位元層次思考、高斯消去法)&lt;/li&gt;&lt;li&gt;2006 決賽 - 題目 D - 分「樹」 (位元層次思考)&lt;/li&gt;&lt;li&gt;2007 初賽 - 題目 B - 完全子圖 (最大公因數、歐幾里德演算法)&lt;/li&gt;&lt;li&gt;2007 初賽 - 題目 E - 東方幻想鄉 (平面幾何、向量)&lt;/li&gt;&lt;li&gt;2008 初賽 - 題目 A - 畢達哥拉斯之謎 (畢氏定理、勾股數)&lt;/li&gt;&lt;li&gt;2008 初賽 - 題目 E - 幼稚的災難 (代數、次方、模數)&lt;/li&gt;&lt;li&gt;2008 決賽 - 題目 D - 輾轉難眠 (最大公因數、次方)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;三、模擬題(Simulation)：依照給定的條件，去模擬出結果，有點類似寫遊戲的方式，只是不需要設計華麗的畫面。&lt;/p&gt;&lt;ol&gt;&lt;li&gt;2005 初賽 - 題目 A - 忍耐任務 (物理之平面運動)&lt;/li&gt;&lt;li&gt;2007 初賽 - 題目 A - 千里傳情&lt;/li&gt;&lt;li&gt;2007 決賽 - 題目 A - 誰來午餐？ (Priority Queue、最小公倍數)&lt;/li&gt;&lt;li&gt;2008 初賽 - 題目 C - 計票程式&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;四、貪婪演算法(Greedy)、排序(Sort)：貪婪演算法是依照一個自定的決策(貪婪法則)，每次取最有利的一個，而這決策的過程可能會需要對輸入的資料做排序。&lt;/p&gt;&lt;ol&gt;&lt;li&gt;2005 初賽 - 題目 B - 惱人的零錢&lt;/li&gt;&lt;li&gt;2005 決賽 - 題目 A - 誰先晚餐&lt;/li&gt;&lt;li&gt;2006 初賽 - 題目 B - 古力德&lt;/li&gt;&lt;li&gt;2006 決賽 - 題目 E - 海賊王&lt;/li&gt;&lt;li&gt;2007 決賽 - 題目 F - 交換禮物&lt;/li&gt;&lt;li&gt;2008 初賽 - 題目 D - 郵輪&lt;/li&gt;&lt;li&gt;2008 決賽 - 題目 H - 幼稚國王的行程 (Dijkstra&amp;#39;s &lt;span class=&quot;Eng&quot;&gt;最短路徑演算法&lt;/span&gt;)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;五、動態規劃(DP)：以建表格的方式來記錄每一種情況，並推導出每一項與前面幾項的遞迴關係，依照這關係將表格建立起來。&lt;/p&gt;&lt;ol&gt;&lt;li&gt;2005 初賽 - 題目 C - 互質任務&lt;/li&gt;&lt;li&gt;2006 初賽 - 題目 E - 漢米頓的麻煩&amp;nbsp;(Floyd-Warshall 演算法)&lt;/li&gt;&lt;li&gt;2006 初賽 - 題目 F - 營地&lt;/li&gt;&lt;li&gt;2006 決賽 - 題目 C - 畢業演奏&lt;/li&gt;&lt;li&gt;2006 決賽 - 題目 F - 假日的奇想曲&lt;/li&gt;&lt;li&gt;2007 初賽 - 題目 F - 打不倒的樹木人&lt;/li&gt;&lt;li&gt;2007 決賽 - 題目 D - 正直DE (Matrix Chain Multiplication 問題)&lt;/li&gt;&lt;li&gt;2008 決賽 - 題目 A - 蜜蜂的約會 (LIS、LCS)&lt;/li&gt;&lt;li&gt;2008 決賽 - 題目 G - 獎金 (最大連續元素和)&lt;/li&gt;&lt;li&gt;2008 決賽 - 題目 C - 咒語&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;六、各個擊破法(D&amp;amp;C)、遞迴(Recursion)：各個擊破法是將問題分解成若干個和自己一樣但規模較小的問題，一直分解到可以直接解決為止，過程中我們通常是使用遞迴來處理。&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;七、廣度優先搜尋法(BFS)：圖形(Graph)走訪的一種，主要用於計算每個節點與起點之間相隔幾層(即深度)。&lt;/p&gt;&lt;ol&gt;&lt;li&gt;2006 初賽 - 題目 A - 跳格子遊戲&lt;/li&gt;&lt;li&gt;2006 決賽 - 題目 A - 好多油瓶&lt;/li&gt;&lt;li&gt;2006 決賽 - 題目 B - 射手座之日 (DFS 亦可)&amp;nbsp;&lt;/li&gt;&lt;li&gt;2006 決賽 - 題目 G - 剖面導向程式設計 (DFS 亦可)&lt;/li&gt;&lt;li&gt;2007 初賽 - 題目 C - 排水系統 (DFS 亦可)&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;八、深度優先搜尋法(DFS)、回溯法(Back-tracking)：DFS 為另一種圖形的走訪方式，主要用於快速找到一條路徑，可以配合回溯法將不可能會有結果的分技直接返回。&lt;/p&gt;&lt;ol&gt;&lt;li&gt;2005 決賽 - 題目 F - 捷運漫遊&lt;/li&gt;&lt;li&gt;2006 初賽 - 題目 E - 漢米頓的麻煩&amp;nbsp;&lt;/li&gt;&lt;li&gt;2007 決賽 - 題目 G - 丁丁共和國&lt;/li&gt;&lt;li&gt;2007 決賽 - 題目 H - 數字拼盤&lt;/li&gt;&lt;li&gt;2008 初賽 - 題目 F - 國家 (Strongly connected components, SCC)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;九、其他：不屬於上述題型，難以歸類的題目。&lt;/p&gt;&lt;ol&gt;&lt;li&gt;2007 決賽 - 題目 E - 核心字串 (Queue)&lt;/li&gt;&lt;li&gt;2007 決賽 - 題目 B - 平行運算 (Graph)&lt;/li&gt;&lt;li&gt;2008 決賽 - 題目 E - 不景氣的年代&lt;/li&gt;&lt;li&gt;2008 決賽 - 題目 F - 數列 (本地建表)&lt;/li&gt;&lt;/ol&gt; 
</content> 
</entry> 
 
 <entry> 
 <id>tag:www.tcgs.tc.edu.tw,2008-12-08:233</id>
 <title>NPSC 2008 決賽 - 題目 H - 幼稚國王的行程</title> 
 <link rel="alternate" type="text/html" href="http://www.tcgs.tc.edu.tw/blog/index.php?op=ViewArticle&amp;articleId=233&amp;blogId=2" /> 
  
 <modified>2008-12-08T08:00:33+0800</modified> 
 <issued>2008-12-08T08:00:33+0800</issued> 
 <created>2008-12-08T08:00:33+0800</created> 
 <summary type="text/plain"> NPSC 2008 決賽 - 題目 H - 幼稚國王的行程  說明：給你一個有重覆邊的有向權重圖，請你找出可以在指定距離內回到自己的點。  解法：Greedy ...</summary> 
 <author> 
  
 <name>sagit</name> 
 <url>http://www.tcgs.tc.edu.tw/blog/index.php?blogId=2</url> 
 <email>sagit@tcgs.tc.edu.tw</email> 
</author> 
<dc:subject>
NPSC 2008 決賽 
</dc:subject> 
 <content type="text/html" mode="escaped" xml:lang="zh-tw" xml:base="http://www.tcgs.tc.edu.tw/blog/index.php?blogId=2"> 
 &lt;p&gt;NPSC 2008 決賽 - 題目 H - 幼稚國王的行程&lt;/p&gt;&lt;p&gt;說明：給你一個有重覆邊的有向權重圖，請你找出可以在指定距離內回到自己的點。&lt;/p&gt;&lt;p&gt;解法：Greedy 解，逐點使用 &lt;span class=&quot;Eng&quot;&gt;Dijkstra&amp;#39;s 的最短路徑演算法，看是不是能在指定距離內回到自己。這一題的測資有兩個陷阱，一是有的邊是自己回到自己，二是兩點之間可能不只有一個邊，要特別處理。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;參考程式：&lt;/p&gt;&lt;p&gt;// NPSC 2008 高中組決賽 &lt;br /&gt;// 題目 H - 幼稚國王的行程 &lt;br /&gt;// By sagit at TCGS&lt;br /&gt;#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;#include &amp;lt;cstdio&amp;gt;&lt;/p&gt;&lt;p&gt;using namespace std;&lt;/p&gt;&lt;p&gt;const int MAX=1002, VERY_LONG=100000;&lt;br /&gt;int G[MAX][MAX], D[MAX], V[MAX], Ans[MAX], An, Num, Dis;&lt;br /&gt;// G 記錄兩點之間的距離, D 記錄到某點的最短距離, V 記錄該點是否已完成 &lt;br /&gt;// Ans 記錄答案, An 為答案個數, Num 為點的總數, Dis 為要求的距離 &lt;/p&gt;&lt;p&gt;int main()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; freopen(&amp;quot;ph.in&amp;quot;, &amp;quot;rt&amp;quot;, stdin);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; freopen(&amp;quot;ph.out&amp;quot;, &amp;quot;w+t&amp;quot;, stdout);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int k, m, i, j, a, b, c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; scanf(&amp;quot;%d&amp;quot;, &amp;amp;k);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (k--)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scanf(&amp;quot;%d%d%d&amp;quot;, &amp;amp;Num, &amp;amp;m, &amp;amp;Dis);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i=1; i&amp;lt;=Num; i++)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 將所有點的距離設為很大 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (j=1; j&amp;lt;=Num; j++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; G[i][j]=VERY_LONG;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i=0; i&amp;lt;m; i++)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 輸入每個點的距離 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scanf(&amp;quot;%d%d%d&amp;quot;, &amp;amp;a, &amp;amp;b, &amp;amp;c);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (a==b||G[a][b]&amp;lt;c) continue; // 連到自己或重覆而較長的邊不處理 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; G[a][b]=c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i=1, An=0; i&amp;lt;=Num; i++)&amp;nbsp;&amp;nbsp;&amp;nbsp; // 逐點做 Dijkstra &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (j=1; j&amp;lt;=Num; j++)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 啟始化動作 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D[j]=G[i][j], V[j]=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (j=1, a=0, b=VERY_LONG-1; j&amp;lt;=Num; j++) // 找一個最近的點 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!V[j]&amp;amp;&amp;amp;D[j]&amp;lt;b) a=j, b=D[j];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (a==0||b&amp;gt;Dis) break; // 找不到就離開 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; V[a]=1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (j=1; j&amp;lt;=Num; j++)&amp;nbsp; // 以該點更新相鄰點的距離 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!V[j]&amp;amp;&amp;amp;D[a]+G[a][j]&amp;lt;D[j]) D[j]=D[a]+G[a][j];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (D[i]&amp;lt;=Dis)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 若回到原點在限定距離內, 則找到答案 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ans[An++]=i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&amp;quot;%d\n&amp;quot;, An);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 列印答案 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i=0; i&amp;lt;An; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (i&amp;gt;0) printf(&amp;quot; &amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&amp;quot;%d&amp;quot;, Ans[i]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; system(&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;}&lt;/p&gt; 
</content> 
</entry> 
 
 <entry> 
 <id>tag:www.tcgs.tc.edu.tw,2008-12-07:230</id>
 <title>NPSC 2008 決賽 - 題目 G - 獎金</title> 
 <link rel="alternate" type="text/html" href="http://www.tcgs.tc.edu.tw/blog/index.php?op=ViewArticle&amp;articleId=230&amp;blogId=2" /> 
  
 <modified>2008-12-07T08:00:41+0800</modified> 
 <issued>2008-12-07T08:00:41+0800</issued> 
 <created>2008-12-07T08:00:41+0800</created> 
 <summary type="text/plain"> NPSC 2008 決賽 - 題目 G - 獎金 ...</summary> 
 <author> 
  
 <name>sagit</name> 
 <url>http://www.tcgs.tc.edu.tw/blog/index.php?blogId=2</url> 
 <email>sagit@tcgs.tc.edu.tw</email> 
</author> 
<dc:subject>
NPSC 2008 決賽 
</dc:subject> 
 <content type="text/html" mode="escaped" xml:lang="zh-tw" xml:base="http://www.tcgs.tc.edu.tw/blog/index.php?blogId=2"> 
 &lt;p&gt;NPSC 2008 決賽 - 題目 G - 獎金&lt;/p&gt;&lt;p&gt;說明：給你一連串的數字，請你找出(一)某段連續數字減去1000後，加起來的總合是最大的。(二)某段連續數字減去1000後，加起來的總合再除以數字個數是最大的。&lt;/p&gt;&lt;p&gt;解法：動態規劃(DP)與直解的題目，方案二即是所有數字中最大的那個，而方案一則是最大連續元素和的題目，可以參考「&lt;a href=&quot;http://www.csie.ntnu.edu.tw/~u91029/MaximumConsecutiveSum.html&quot; target=&quot;_blank&quot;&gt;DJWS的網路日誌&lt;/a&gt;」的說明。我們用 S[n] 記錄以第 n 個數為最後一個數的最大連續元素和，則如果 S[n-1] &amp;lt;=0 ，則 S [n] 為第 n 個數字的值A[n]；如果 S[n-1] &amp;gt;0 ，則我們將第 n 個元素也加進去，也就是 S[n]=S[n-1]+A[n]。因為我們只會使用到 S[] 的前一個元素，所以不需要使用一個陣列，只要用一個變數來記錄即可。&lt;/p&gt;&lt;p&gt;參考程式：&lt;/p&gt;&lt;p&gt;// NPSC 2008 高中組決賽 &lt;br /&gt;// 題目 G - 獎金 &lt;br /&gt;// By sagit at TCGS&lt;br /&gt;#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;/p&gt;&lt;p&gt;using namespace std;&lt;/p&gt;&lt;p&gt;int main()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; freopen(&amp;quot;pg.in&amp;quot;, &amp;quot;rt&amp;quot;, stdin);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; freopen(&amp;quot;pg.out&amp;quot;, &amp;quot;w+t&amp;quot;, stdout);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ios_base::sync_with_stdio(false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int n, best1, best2, sum, a, i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cin &amp;gt;&amp;gt; n;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (n==0) break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; best1=best2=sum=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i=0; i&amp;lt;n; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cin &amp;gt;&amp;gt; a;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a-=1000;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (a&amp;gt;best2) best2=a;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 方案二是單日最大值 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sum&amp;lt;=0) sum=a;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else sum+=a;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sum&amp;gt;best1) best1=sum;&amp;nbsp;&amp;nbsp; // 方案一是最大連續整數和 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cout &amp;lt;&amp;lt; best1 &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; best2 &amp;lt;&amp;lt; endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; system(&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;}&lt;/p&gt; 
</content> 
</entry> 
 
 <entry> 
 <id>tag:www.tcgs.tc.edu.tw,2008-12-06:235</id>
 <title>NPSC 2008 決賽 - 題目 F - 數列</title> 
 <link rel="alternate" type="text/html" href="http://www.tcgs.tc.edu.tw/blog/index.php?op=ViewArticle&amp;articleId=235&amp;blogId=2" /> 
  
 <modified>2008-12-06T08:00:28+0800</modified> 
 <issued>2008-12-06T08:00:28+0800</issued> 
 <created>2008-12-06T08:00:28+0800</created> 
 <summary type="text/plain"> NPSC 2008 決賽 - 題目 F - 數列  說明：有一個數列的前幾項是：0、1、3、7、12、20，任兩項(可重覆)相加的和絕不會出現兩次，即 a+b != c+d (a、b、c、d ...</summary> 
 <author> 
  
 <name>sagit</name> 
 <url>http://www.tcgs.tc.edu.tw/blog/index.php?blogId=2</url> 
 <email>sagit@tcgs.tc.edu.tw</email> 
</author> 
<dc:subject>
NPSC 2008 決賽 
</dc:subject> 
 <content type="text/html" mode="escaped" xml:lang="zh-tw" xml:base="http://www.tcgs.tc.edu.tw/blog/index.php?blogId=2"> 
 &lt;p&gt;NPSC 2008 決賽 - 題目 F - 數列&lt;/p&gt;&lt;p&gt;說明：有一個數列的前幾項是：0、1、3、7、12、20，任兩項(可重覆)相加的和絕不會出現兩次，即 a+b != c+d (a、b、c、d 均為數列裡的元素)，而且第 n 項元素一定是大於第 n-1 項中最小的那一個，請你找出 2^32 以內的每一項是多少。&lt;/p&gt;&lt;p&gt;解法：本地建表，因為這個程式無法在10秒鐘內計算出需要的答案，故先寫一個建表程式，把答案輸出到一個檔案，再利用這個檔案的內容當作主程式陣列的預設值，即可快速地以查表法得到答案。建表程式部分，利用類似篩法的作法，以一個位元陣列計錄每一個數字是不是答案，將不可能的一一去掉，便可以很快地找出答案。因為數字高達2^32，故兩者相加會超過 unsigned long int 的範圍，所以我們把原式 a+b != c+d 改成 a-d != c-d，a、c 是減法中較大的數，如此即可將數字控制在 unsigned long long int 的範圍中。下面的參考程式是一邊計算一邊輸出，可隨時中斷，再次執行時只要把上次的輸出檔更名為輸入檔的檔名，便可接著上一次找到的最後一個數字繼續執行。而主程式只是用一個陣列來儲存答案，沒什麼特別的，只是數字超過 2^31 的部分後面要加上 UL, 否則可能會出錯。&lt;/p&gt;&lt;p&gt;參考程式：&lt;/p&gt;&lt;p&gt;(一)建表程式&lt;/p&gt;&lt;p&gt;// NPSC 2008 高中組決賽 &lt;br /&gt;// 題目 F - 數列 &lt;br /&gt;// 建表程式 &lt;br /&gt;// By sagit at TCGS&lt;br /&gt;#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;deque&amp;gt;&lt;br /&gt;#include &amp;lt;bitset&amp;gt;&lt;/p&gt;&lt;p&gt;using namespace std;&lt;/p&gt;&lt;p&gt;const unsigned long int MAX=4294967250UL; // 處理的最大數字 &lt;br /&gt;deque&amp;lt;unsigned long int&amp;gt; Seq;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 記錄該數列 &lt;br /&gt;bitset&amp;lt;MAX&amp;gt; V;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 記錄該數字是否使用過 &lt;/p&gt;&lt;p&gt;bool Test(unsigned long int n)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 測試這個數字是否正確 &lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i=Seq.size()-1; i&amp;gt;0; i--)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (V[n-Seq[i]]) return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;void Insert(unsigned long int n)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 插入一個數字到數列中 &lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Seq.push_back(n);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cout &amp;lt;&amp;lt; n &amp;lt;&amp;lt; &amp;quot;, &amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Seq.size()%10==0) cout &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; // 每10個換一次行 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i=0; i&amp;lt;Seq.size(); i++)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 將不可能的先去掉 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; V[n-Seq[i]]=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cerr &amp;lt;&amp;lt; Seq.size() &amp;lt;&amp;lt; &amp;quot;-&amp;quot; &amp;lt;&amp;lt; n &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; // 輸出目前進度 &lt;br /&gt;}&lt;/p&gt;&lt;p&gt;int main()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; freopen(&amp;quot;pf_1.txt&amp;quot;, &amp;quot;rt&amp;quot;, stdin);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; freopen(&amp;quot;pf_2.txt&amp;quot;, &amp;quot;w+t&amp;quot;, stdout);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ios_base::sync_with_stdio(false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned long int i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 讀取已經處理好的數列 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cin &amp;gt;&amp;gt; i &amp;gt;&amp;gt; c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (cin.fail()) break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Insert(i);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Seq.empty())&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 設定數列的啟始值 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Insert(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Insert(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i=Seq.back()+1; i&amp;lt;MAX; i++)&amp;nbsp;&amp;nbsp;&amp;nbsp; // 開始處理 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Test(i)) Insert(i);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 測試正確則把它加到數列裡 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cout &amp;lt;&amp;lt; &amp;quot;\n&amp;quot; &amp;lt;&amp;lt; Seq.size() &amp;lt;&amp;lt; endl; // 輸出數列元素個數 &lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; system(&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;(二)主程式&lt;/p&gt;&lt;p&gt;// NPSC 2008 高中組決賽 &lt;br /&gt;// 題目 F - 數列 &lt;br /&gt;// By sagit at TCGS&lt;br /&gt;#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;/p&gt;&lt;p&gt;using namespace std;&lt;br /&gt;const int MAX=7601;&lt;br /&gt;const unsigned long int S[MAX]={&lt;br /&gt;0,1,3,7,12,20,30,44,65,80,96,&lt;br /&gt;122,147,181,203,251,289,360,400,474,564,&lt;br /&gt;592,661,774,821,915,969,1015,1158,1311,1394,&lt;br /&gt;1522,1571,1820,1895,2028,2253,2378,2509,2779,2924,&lt;br /&gt;3154,3353,3590,3796,3997,4296,4432,4778,4850,5122,&lt;br /&gt;5242,5297,5750,5997,6373,6800,6924,7459,7546,7788,&lt;br /&gt;8219,8502,8729,8941,9881,10199,10586,10897,11288,11613,&lt;br /&gt;11875,12033,12930,13393,14046,14533,14900,15165,15687,15971,&lt;br /&gt;16618,17354,17931,18844,19070,19630,19669,20721,21947,22525,&lt;br /&gt;23290,23563,23880,24595,24767,25630,26036,26254,27218,28565,&lt;br /&gt;...... // 中間省略&lt;br /&gt;4267538820UL,4268306780UL,4268768376UL,4271069618UL,4272199924UL,&lt;br /&gt;4272853295UL,4274335619UL,4276397953UL,4276414928UL,4280258856UL,&lt;br /&gt;4280719359UL,4281771507UL,4283826680UL,4285239463UL,4285344758UL,&lt;br /&gt;4286414999UL,4287955925UL,4288242680UL,4288819021UL,4294853005UL};&lt;/p&gt;&lt;p&gt;int main()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; freopen(&amp;quot;pf.in&amp;quot;, &amp;quot;rt&amp;quot;, stdin);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; freopen(&amp;quot;pf.out&amp;quot;, &amp;quot;w+t&amp;quot;, stdout);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ios_base::sync_with_stdio(false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int n;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cin &amp;gt;&amp;gt; n;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (n&amp;lt;0) break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (n&amp;gt;=MAX) cout &amp;lt;&amp;lt; 0 &amp;lt;&amp;lt; endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else cout &amp;lt;&amp;lt; S[n] &amp;lt;&amp;lt; endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp; system(&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;}&lt;/p&gt; 
</content> 
</entry> 
 
</feed>
