ACM水题

作者: 黑白咖 | 来源:发表于2017-03-18 08:25 被阅读93次

    2017.03.18

    5个数求最值

    描述
    设计一个从5个整数中取最小数和最大数的程序
    输入
    输入只有一组测试数据,为五个不大于1万的正整数
    输出
    输出两个数,第一个为这五个数中的最小值,第二个为这五个数中的最大值,两个数字以空格格开。
    样例输入

    1 2 3 4 5
    

    样例输出

    1 5
    

    代码实现

    #include <iostream>
    using namespace std;
    int main(){
        int num[5];
        int min,max;
        for(int i=0;i<5;i++){
            cin>>num[i];
        }
        min = max = num[0];
        for(int j=0;j<5;j++){
            if(min>num[j]){
                min = num[j];
            }
            if(max < num[j]){
                max = num[j];
            }
        }
        cout<<min<<" "<<max;
        return 0;
    }
    

    水仙花数

    描述
    请判断一个数是不是水仙花数。
    其中水仙花数定义各个位数立方和等于它本身的三位数。
    输入
    有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000)
    输入0表示程序输入结束。
    输出
    如果n是水仙花数就输出Yes
    否则输出No
    样例输入

    153
    154
    0
    

    样例输出

    Yes
    No
    

    代码实现

    #include <iostream>
    #include<stdio.h>
    #include<vector>
    using namespace std;
    int main(){
        vector<string> v;
        int temp;
        while(true){
            cin>>temp;
            if(temp == 0){
            break;
            }else{
                int sum = 0,num = temp;
                for(;num>0;num/=10){
                    sum += (num%10) * (num%10)*(num%10);
                }
                if(temp == sum){
                v.push_back("Yes");
                }else{
                v.push_back("No");
                }
            }
        }
        for(int i=0;i<v.size();i++){
            cout<<v[i]<<endl;
        }
        return 0;
    }
    

    三个数从小到大排序

    描述
    现在要写一个程序,实现给三个数排序的功能

    输入
    输入三个正整数
    输出
    给输入的三个正整数排序
    样例输入

    20 7 33
    

    样例输出

    7 20 33
    

    代码实现

    #include <iostream>
    using namespace std;
    int main(){
        int num[3];
        for(int i=0;i<3;i++)
            cin>>num[i];
        for(int i=0;i<3;i++){
            int min = num[i];
            for(int j=i+1;j<3;j++){
                if(num[i]>num[j]){
                    int temp = num[j];
                    num[j] = num[i];
                    num[i] = temp;
                }
            }
        }
        for(int i=0;i<3;i++){
            cout<<num[i]<<" ";
        }
        return 0;
    }
    
    

    2017.03.19

    素数求和问题

    描述
    现在给你N个数(0<N<1000),现在要求你写出一个程序,找出这N个数中的所有素数,并求和。
    输入
    第一行给出整数M(0<M<10)代表多少组测试数据
    每组测试数据第一行给你N,代表该组测试数据的数量。
    接下来的N个数为要测试的数据,每个数小于1000
    输出
    每组测试数据结果占一行,输出给出的测试数据的所有素数和
    样例输入

    3
    5
    1 2 3 4 5
    8
    11 12 13 14 15 16 17 18
    10
    21 22 23 24 25 26 27 28 29 30
    

    样例输出

    10
    41
    52
    

    代码实现

    #include <cstdlib>
    #include <iostream>
    #include <math.h>
    
    using namespace std;
    
    int getSum(int *num,int size){
        int result = 0;
        for(int i=0;i<size;i++){
            int number = num[i];
            bool istrue = true;
            if(number == 1){
                continue;
            }
            if(number == 2 || number == 3){
                result += number;
                continue;
            }
            for(int j= 2;j<=sqrt(number);j++){
                if(number % j == 0){
                    istrue = false;
                    break;
                }
            }
            if(istrue){
                result += number;
            }
        }
        return result;
    }
    
    int main(){
        int n;
        cin>>n;
        int *result = new int[n];
        for(int i=0;i<n;i++){
            int group;
            cin>>group;
            int *num = new int[group];
            for(int j=0;j<group;j++){
                cin>>num[j];
            }
            result[i] = getSum(num,group);
            delete []num;
        }
        for(int i=0;i<n;i++)
        cout<<result[i]<<endl;
        delete []result;
        return -1;
    }
    

    相关文章

      网友评论

          本文标题:ACM水题

          本文链接:https://www.haomeiwen.com/subject/hhbynttx.html