返回列表 發帖

C++競賽題練習9_Lisa 的圍巾

Lisa 的圍巾
執行時間限制: 10 秒
Gaspard(賈斯伯) 在一間人類學校就讀,為什麼要強調是人類學校呢,因為他的外形並不像人類!有人說他耳朵長長的好像兔子,但大部分的人都說他長的像隻小狗,總之他全身都毛茸茸的,毛的柔順質感讓大家都很喜歡他。

有一天,班上來了位轉學生名叫 Lisa(麗莎),大家都跟 Gaspard 說「Lisa 和你長的好像喔!」「我哪有!」Gaspard 這樣回嘴。雖然這句話沒什麼諷刺的意味,但 Gaspard 聽了這句話心理總是不大舒服。這一天早上,大家都將焦點放在 Lisa 上,沒什麼人跟 Gaspard 聊天,Gaspard 感覺一陣失落。

到了體育課,輪到 Gaspard 測跑步了,在老師的預備哨響後 Gaspard衝了出去,沒想到在他旁邊的 Lisa 竟然也跟著他一起跑,而且跑的比他還快!Gaspard 終於忍不住了,一個早上的委屈和生氣就在這個時候爆發出來,Gaspard 去找 Lisa 打架了!

他們打了一陣之後,兩人相視而笑,他們是這間學校中,最特別的兩位呢!Lisa 和 Gaspard 交換圍巾後,就變成了很要好的朋友,一起聊天,一起用餐,遇到討厭的下雨天就一起玩耍,一起出餿主意!

事隔多年,Lisa 和 Gaspard 回想起他們的見面都還會因這段往事而笑呢!有一天他們又聊到他們相識的時候,他們交換圍巾的時候。Gaspard 對Lisa 說:「你的圍巾真的很漂亮呢,而且又保暖!」Lisa回應著說:「對啊,這可是我親自挑的。」Gaspard 突然很好奇,問道:「真的嗎,多少錢呀?」但 Lisa 只是笑而不答。在 Gaspard 的再三請求下,Lisa 終於給了Gaspard 一個提示:「我有兩個數字 A 和 B,把由 A 到 B 中不是質數的數字加起來,就是你現在戴的圍巾的價錢。」

這可真是傷腦筋,你能幫幫 Gaspard 嗎?
別忘了,質數就是那些正因數除了 1 以外只有自己的正整數,而且 1 不是質數喔!

輸入檔說明
第一行有一個整數 T (T ≤ 50000),代表接下來有幾組測試資料。每組測資皆只有一行,每行包含兩個整數 A 及 B (1 ≤ A ≤ B ≤7000)。

輸出檔說明
對於每組測資,請輸出一個數字為圍巾的價錢。

範例輸入
5
4 6
2 6
1 6
4 4
5 5

範例輸出
10
10
11
4
0
May

  1. #include <iostream>
  2. using namespace std;
  3. const int maxn = 7005;
  4. bool prime[maxn];

  5. int main() {
  6.     ios::sync_with_stdio(0);
  7.     cin.tie(0);
  8.     for (int i = 2; i <= maxn; i++) {
  9.         prime[i] = true;//預設2-7005都是質數
  10.     }
  11.     prime[0] = false;
  12.     prime[1] = false;
  13.     for (int i = 2; i * i <= maxn; i++) {//如果i是2,迴圈就跑到2*2( 必須<=7005)
  14.         if (prime[i]) {
  15.             for (int j = i + i; j < maxn; j += i) {
  16.                 prime[j] = false;//從2開始檢查,如果i是質數它的倍數(<7005)就不是質數
  17.             }
  18.         }
  19.     }
  20.     int T, A, B;
  21.     cin >> T; //幾組測資
  22.     while (T--) {
  23.         cin >> A >> B;
  24.         int sum = 0;
  25.         for (int i = A; i <= B; i++) {
  26.             if (!prime[i]) sum += i;//如果i不是質數,就加到sum去
  27.         }
  28.         cout << sum << "\n";
  29.     }
  30.     return 0;
  31. }
複製代碼
May

TOP

返回列表