第二次十道题

1. 题目描述

给定一个正整数N(N>2),输出所有比N小的素数。

#include <iostream>

using namespace std;

int main() {

    int N;

    cin >> N;

    for (N; N > 2; N--)

    {

        int isprime(int);

        isprime(N);

    }

    cout << 2;

    return 0;

}

int isprime(int n) {

    int i;

    for (i = 2; i < n; i++) {

        if (n % i == 0) return 1;

    }

    cout << n << " " ;

    return 1;

}

2. 题目描述

给定一个正整数N(N>6),输出所有比N小的完数。
如果一个数恰好等于它的因子之和,则称该数为 完数(perfect number)。
例如:6就是一个完数,6 = 1 + 2 + 3。

#include <iostream>

using namespace std;

int main() {

    int N;

    cin >> N;

    for (N; N >= 6; N--) {

        int ws(int);

        if (ws(N) != 1)

            cout << ws(N) << endl;

    }

    return 0;

}

int ws(int n) {

    int i;

    int t = 0;

    for (i = 1; i < n; i++) {

        if (n % i == 0)

            t = t + i;

        else

            t = t + 0;

    }

    if (n == t)

        return t;

    else

        return 1;

}

3. 题目描述

输入一个正数x,求其三角函数sin、cos和tan的近似值,要求误差小于1e-10。
具体使用麦克劳林公式,通过逐步迭代累加实现。

#include <iostream>

#include <cmath>

using namespace std;

int main(){

    double x;

    cin >> x;

    cout << "sin(" << x << ")" << "=" << sin(x) <<endl;

     cout << "cos(" << x << ")" << "=" << cos(x) <<endl;

      cout << "tan(" << x << ")" << "=" << tan(x) <<endl;

    return 0;

}

4. 题目描述

高祖刘邦问韩信统御士兵多少,韩信答说,每3人一列余1人,5人一列余2人,7人一列余4人,13人一列余6人……刘邦茫然而不知其数。
请求出满足要求的前N个韩信统御的士兵数量。

#include <iostream>

using namespace std;

int main(){

    int N;

    int n =0;

    cin >> N;

    while(N>0){

        if (n%3==1&&n%5==2&&n%7==4&&n%13==6)

        {cout << n << endl;

            N--;

        }

        n++;

         

         

    }

    return 0;

}

5. 题目描述

某人有 N 元钱,打算买 N 只鸡。到市场上一看,公鸡5元一只,母鸡3元一只,小鸡1元三只。
请问公鸡,母鸡,小鸡各多少只才能刚好花 N 元钱买到 N 只鸡?

#include <iostream>

using namespace std;

int main() {

    int N;

    cin >> N;

    int a, b;

    for (a = 0; a < (N/5); a++) {

        for (b = 0; b < (N/3); b++) {

            if (a + b + 3*(N - 5*a - 3*b) == N)

                     cout << "公鸡=" << a << ",母鸡=" << b << ",小鸡=" << (N-a-b) << endl;

 

 

        }

 

    }

    return 0;

}

6. 题目描述

小明读书,第一天读了全书的一半加2页,第二天读了剩下的一半加2页,以后天天如此…,第N天读完了最后的3页,请问全书有多少页?

#include <iostream>

using namespace std;

int main(){

    int N;

    int t =3;

    cin >> N;

    for(N;N>1;N--){

        t = (t+2)*2;

         

    }

    cout << t << endl;

    return 0;

}

7. 题目描述

第一天,小猴子摘了若干个桃子,立即吃了一半,还觉得不过瘾,又多吃了1个。
第二天,接着吃剩下的桃子的一半,还觉得不过瘾,又多吃了1个。
以后小猴子都是吃剩下的桃子的一半多一个。到第N天,小猴子再去吃桃的时候,看到只剩下一个桃子。
问小猴子第一天一共摘了多少个桃子?

#include <iostream>

using namespace std;

int main(){

    int N;

    int n =1;

    cin >> N;

    for(N;N>1;N--){

        n=(n+1)*2;

    }

    cout << n;

    return 0;

}

8. 题目描述

给定十进制数N,以16进制的形式输出,且16进制的输出字母大写。要求输出宽度占10个字符,不足10个用$填充。

#include <iostream>

using namespace std;

int main(){

    int N;

    cin >> N;

    int x = N;

    cout.width(10);

    cout.fill('$');

    cout.setf(ios_base::showbase | ios_base::uppercase);

    cout.unsetf(ios_base::dec);

    cout.setf(ios_base::hex);

    cout << x << endl;

 

    return 0;

}

9. 题目描述

输入一个大于2的正整数,将其写成两个素数之和。

#include <iostream>

using namespace std;

int p = 2;

int main() {

    int N;

    cin >> N;

    int isprime(int);

        if (isprime(N)!=1)

            cout << N << "=" << (p > (N - p) ? (N - p) : p) << "+" << (p > (N - p) ? p : (N - p));

    return 0;

}

int isprime(int n) {

    

    while (p < n) {

        int m = 2;

        if (p == 2) {

            if ((n - p) % m == 0);

            return 2;

        }

        else {

            for (m; m < p; m++) {

                if (p % m == 0)

                    break;

                else if ((n - p) % m == 0)

                    break;

                else

                    return p;

            }

        }

        p++;

    }

    return 1;

}

10. 题目描述

已知C++语言的数学函数库提供了log(x)函数,用于计算以e为底的x的对数。
请编写一个函数logf(x,a),用于计算以任意数值a为底的x的对数值。

#include <iostream>

#include <cmath>

using namespace std;

int main() {

    double x, a;

    cin >> x >> a;

    cout << log(x)/log(a);

    return 0;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值