1. 程式人生 > 實用技巧 >1585七個小矮人(程式碼簡化)

1585七個小矮人(程式碼簡化)

描述

白雪公主經常為七個小矮人講故事,為了方便,她為這七個小矮人安排了學號,學號分別是 1 至 7 號。有一次,白雪公主又邀請七個小矮人來聽她講故事,但是隻來了六個小矮人,那 麼缺席的那個小矮人是誰呢?

輸入

一行,6 個學號,空格分開,表示來聽故事的六個小矮人的學號。

輸出

沒來聽故事的小矮人的學號。

輸入樣例 1

3 5 2 1 7 4

輸出樣例 1

6

輸入樣例 2

7 3 2 4 1 6

輸出樣例 2

5

這是其實一道很簡單的題目,我第一次做這道題時最開始是用陣列來計數。
int a[7]={0};
迴圈輸入,輸入6號就a[6-1]++;最後在迴圈找出為0的元素,即沒來的小矮人。

程式碼如下:
 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 { 
 5     int a[7]={0},n;
 6     for(int i=1;i<=6;i++)
 7     {
 8         cin>>n;
 9         a[n-1]++;
10     }
11     for(int i=0;i<=6;i++)
12     {
13         if(a[i]==0) cout<<i+1;
14     }
15     return 0;
16 }

做完之後才發現,這道題用陣列其實是大炮打蚊子了。

可以改進程式碼,累加輸入的6個數,然後用1+2+3+4…+7=28,減去累加的數,就是沒有輸入的那個數。

程式碼如下:

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 { 
 5     int s=0,a;
 6     for(int i=1;i<=6;i++)
 7     {
 8         cin>>a;
 9         s+=a;
10     }
11     cout<<28-s;
12
return 0; 13 }