# 上姬考 ## 第一題: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; } ```