2018年1月7日 星期日

To P1 TAB (資概期末-3)Cpp

P1 TAB之期末 C++變化題範例

1/9更新:有想考友誼數、水仙花數、分數相加化簡 、 孿生質數    哦!

一、1061_u3-1_prime
輸入一個正整數 n , 0<n<46000 ,若 n 為質數則印出 Prime,否則印出 Not,註:1非質數
輸入範例
1
2
3
247

輸出範例
Not
Prime
Prime
Not


二、1061_u3-2_gcd(a,b)
輸入兩個正整數 a,b , 0<a,b<65535 ,求 (a,b)的最大公因數
輸入範例
15 21
60 126
88 66
3598 3855

輸出範例
3
6
22
257


三、1061_u3-3_PerfectNumber
輸入一個正整數 n , 0<a,b<34567890 ,算出n的所有<n的因數和 s, s=n則印出Perfect,否則印出 s
輸入範例
6
66
496
666
8128
8128496
33550336
輸出範例
Perfect
78
Perfect
816
Perfect
8005888
Perfect

四、1061_u3-4_5n+1
輸入一個正整數 n , 0<n<1000 ,一直重複計算直到 n=1為止,印出共出現幾個不同的n
n3的倍數則除3,若n為偶數則除2,否則乘5再加1
例出n=7 ,則出現的n依序為 7 , 36 , 12 , 4 , 2 , 1 共出現 6 不同的 n
輸入範例
3
7
10
504
972
輸出範例
2
6
16
11
8


參考程式碼:
// 1061_u3-1 prime
#include <iostream>
using namespace std;
int main(void)
{
    int i, n;
    bool yes=true;
    cin >> n;
    if(n==1) yes=false;
    for(i=2; i*i<=n; ++i)
    {
       if(n%i==0)
       {
           yes=false;
           break;
       }
    }
    if(yes) cout <<"Prime\n";
    else cout << "Not\n";
    return 0;
}

// 1061_u3-2 gcd(a,b)
#include <iostream>
using namespace std;
int main(void)
{
    int a,b,r;
    cin >> a >> b;
    r = a%b;
    while( r!=0 )
    {
       a=b;
       b=r;
       r=a%b;
    }
    cout << b << endl;
    return 0;
}

// 1061_u3-3 Perfect Number
#include <iostream>
using namespace std;
int main(void)
{
    int n,i,s=0;
    cin >> n;
    for(i=1; i<n; ++i )
    {
       if(n%i==0) s+=i;
    }
    if(n==s) cout <<"Perfect\n";
    else cout << s << endl;
    return 0;
}

// 1061_u3-4 5n+1
#include <iostream>
using namespace std;
int main(void)
{
   
    int i,n,cnt=1;
    cin >> n;
    while(n!=1)
    {
       cnt ++;
       if(n%3==0) n/=3;
       else if(n%2==0) n/=2;
       else n=n*5+1;
    }
    cout << cnt << endl;
    return 0;
}



0 意見:

張貼留言