# 上姬考
## 第一題:lucky seven
有一個小村落認為 7 是一個非常吉祥的數字,所以他們的數字比較皆
環繞在 7的身上。
● 今天若有兩數字,則兩數字中可以被 7 整除的比較大,如 140 比
52大,140為最吉祥數字
● 可以被 7 整除的數字中取 70 的餘數較大的比較大,如 28 會比
14 大,28為最吉祥數字
● 不能被 7 整除的數字中取 77 的餘數較小的比較大,如 15 會比
16 和 68 大,15為最吉祥數字
寫一個程式,求出這些數字中的最吉祥數字
輸入格式:
輸入為一連串的數字,範圍介在 1 至 1000 之間,以數字 0 代表這一串
數字的尾端,最多不超過 10 個數字,且 0 不列入須比較的範圍。
輸出格式:
依照該村落的數字比較大小規則,輸出給定數列中最大的數字,若有
多個最大的數字,請輸出最前面那一個。
```cpp=
#include<iostream>
using namespace std;
int main (){
int k,n,flag=0;
cin>>k;
while(k!=0){
if(k%7==0){
if(flag==0) {n=k; flag=1;}
else if (k%70>n%70) n=k;
}
else if(flag==0)
{if(k%77<n%77) n=k;}
cin>>k;
}
cout<<n;
}
```
## 第二題:超機細菌繁殖
超級細菌王每過一天就會分裂出一個超級細菌,而分裂出來的超級細跟超
級細菌王一樣,每過一天也會再分裂出另一個超級細菌。
假設原先有一個超級細菌王,過了一天之後,就會變成一個超級細菌王以
及一個超級細菌;
過了兩天之後,超級細菌王會再分裂出一個超級細菌,另一個超級細菌也
會再產生另一個超級細菌,所以過了兩天之後,就會有一個超級細菌王以
及三個超級細菌。
寫一個程式,給定現在超級細菌王跟超級細菌的比例,計算出從開始到現
到現在,經過了幾天?
輸入格式:
輸入有一行,含有兩個整數 N 和 T,以一個空白隔開,
代表超級細菌王的數量:超級細菌的數量為=> N:T
```cpp=
#include<iostream>
using namespace std;
int main (){
int n,t,total;
cin>>n>>t;
int ans=0;
while(total<t){
total=total*2+n;
ans++;
}
cout<<ans;
}
```
## 第三題:神奇數字
使用者輸入一個四位數字,請你幫他計算出屬於他的神奇數字。
條件如下:
● 如果是奇數,那麼千位數字和個位數字相加總和,再乘以百位數
字和十位數字相加總合。
● 如果是偶數,那麼千位數字和百位數字相乘,以及個位數字與十
位數字相乘,最後把二個相乘結果相加。
○ 若此條件有任一相乘結果為0,則神奇數字為所有數字相
加.
神奇數字不可以超過三位數字,即以上條之超過三位數字的話,只取
後面二位數字(十位字數和個位數字),神奇數字可以是二位數或一位
數。
若使用者輸入數字不是四位數字,必須重新輸入,直到輸入正確四位
數字為止,即只可以輸入1000 ~9999之間的數字,程式必須加以判斷
並要求輪入正確為止。
```cpp=
#include <iostream>
using namespace std;
int main() {
int n,a,b,num;
cin>>n;
while(n>9999 || n<1000){
cin>>n;
}
if (n%2!=0){
a=n/1000+n%10;
b=n/100%10+n/10%10;
num=a*b;
}
else {
a=(n/1000)*(n/100%10);
b=(n/10%10)*(n%10);
if(a==0||b==0) num=n/1000+n/100%10+n/10%10+n%10;
else num=a+b;
}
num=num%100;
cout<<num;
}
```
## 4 第四題:青蛙跳躍
有一隻青蛙每次可以跳躍不一樣的距離,
假設一次可以跳躍的距離為 5 或 8,若目的地距離 97,那麼它可以藉
由跳五次距離 5 和九次距離 8 ,剛好到達目的地;
但若牠的目的地距離在11 則無法順利到達目的地(無法剛好跳躍到剛
好的目的地)
輸入格式
輸入只有一行,包含三個整數 N、M 和 D 。
N 和 M 表示青蛙可以跳躍的距離,D 表示目的地和牠的距離
輸出格式
若青蛙可以剛好到達目的地則輸出 YES,否則輸出NO
```cpp=
#include <iostream>
using namespace std;
int main() {
int n,m,d;
cin>>n>>m>>d;
int flag=0;
for(int i=0 ; i<=d/n ; i++){
int remain=d-i*n;
if(remain%m==0) flag++ ; break;
}
if (flag==0) cout<<"NO";
else cout<<"YES";
}
```
## 5 第五題:ASCII 編碼計算
一個文字統計器,希望能統計出文章中的英文字母大小寫各有
多少?請你寫一個程式,幫忙計算。
輸入格式:
由使用者一一輸入文字訊息,包含各種特殊符號、英文字母和阿拉伯數字
,最後輸入’=’鍵後結束。
輸出格式:
依序輸出英文字母(大小寫要分開計算,前面為大寫,後面小寫),各有多
少。
```cpp=
#include <iostream>
using namespace std;
int main() {
int a=0,b=0,c=0;
char i;
cin>>i;
for(;;){
if (i='=') break;
else if (i>='A' && i<='A') a++;
else if (i>='a' && i<='z') b++;
else if (i>='0' && i<='9') c++;
cin>>i;
}
cout<<a<<" "<<b<<" "<<c;
}
```