zoukankan      html  css  js  c++  java
  • 暑假算法练习Day6

    最近开始了实验室的生活,并且学习了bullet journal。希望接下来的每一天都能完成所有的任务。

    1012 数字分类 (20 分)

    给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:

    • (A_1) = 能被 5 整除的数字中所有偶数的和;
    • (A_2)​ = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 (n_1−n_2+n_3−n_4⋯)
    • (A_3) = 被 5 除后余 2 的数字的个数;
    • (A_4) = 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
    • (A_5) = 被 5 除后余 4 的数字中最大数字。

    输入格式:

    每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。

    输出格式:

    对给定的 N 个正整数,按题目要求计算 A1~A5 并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。

    若其中某一类数字不存在,则在相应位置输出 N

    输入样例 1:

    13 1 2 3 4 5 6 7 8 9 10 20 16 18
    

    输出样例 1:

    30 11 2 9.7 9
    

    输入样例 2:

    8 1 2 4 5 6 7 9 16
    

    输出样例 2:

    N 11 2 N 9
    

    解题分析及代码:

    本题其实比较简单,分情况依次讨论即可。但需要注意的是,在处理(A_2)​的时候,不能以(A_2)​是否为0作为其是否存在的判断依据,因为交错求和结果(A_2)​是可能为0的,所以我采用对其个数是否为0进行判断。

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cstdio>
    #include <cmath>
    #include <iomanip>
    using namespace std;
    int cmp(int a,int b){
        return a>b;
    }
    int main() {
        int n=0;
        cin >> n;
        int a=0;
        int a1=0,a2=0,a3=0,a5=0;
        int A2[1005]={0};
        int n2=0,n4=0;
        double a4=0;
        for(int i=0;i<n;i++){
            cin >> a;
            if(a%10==0) a1+=a;  //A1
            else if(a%5==1) A2[n2++]=a; //A2
            else if(a%5==2) a3++;//A3
            else if(a%5==3){//A4
                n4++;
                a4+=a;
            }
           else if(a%5==4&&a>a5)a5=a;//A5
        }
        if(n4!=0)a4/=n4;
        if(n2!=0){
            int b=1;
            for(int i=0;i<n2;i++){
                A2[i]*=b;
                a2+=A2[i];
                b*=-1;
            }
        }
        if(a1==0) cout << 'N'; //A1output
        else cout << a1 ;
        cout <<" ";
        
        if(n2==0) cout << 'N';//A2output
        else cout << a2 ;
        cout <<" ";
        
        if(a3==0) cout << 'N';//A3output
        else cout << a3 ;
        cout <<" ";
        
        if(n4==0) cout << 'N';//A4output
        else cout <<setiosflags(ios::fixed)<<setprecision(1)<< a4 ;
        cout <<" ";
        
        if(a5==0) cout << 'N';//A5output
        else cout << a5 ;
        cout << endl;
        return 0;
    }
    
    

    1013 数素数 (20 分)

    (P_i)表示第(i)个素数。现任给两个正整数 (M≤N≤104),请输出 (P_M)(P_N) 的所有素数。

    输入格式:

    输入在一行中给出 (M)(N),其间以空格分隔。

    输出格式:

    输出从(P_M)(P_N) 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。

    输入样例:

    5 27
    

    输出样例:

    11 13 17 19 23 29 31 37 41 43
    47 53 59 61 67 71 73 79 83 89
    97 101 103
    

    解题分析及代码:

    本题其实是对素数判断的另一种运用,会写素数判断,其实问题就迎刃而解啦!

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cstdio>
    #include <cmath>
    using namespace std;
    bool IsPrime(int a){
        int b=sqrt(a);
        if(a==1) return false;
        else if (a==2) return true;
        else{
            for(int i=2;i<=b;i++){
                if(a%i==0) return false;
            }
            return true;
        }
    }
    int main() {
        int m,n;
        cin >> m >> n;
        int n1=0,n2=0;
        for(int i=2;n1<n;i++){
            if(IsPrime(i)==true){
                n1++;
                if(n1>=m){
                    n2++;
                    cout << i;
                if(n2%10==0) cout << endl;
                else if(n1!=n) cout <<" ";
                }
            }
        }
        return 0;
    }
    
  • 相关阅读:
    HDU 5883 F
    关于codeblock 为什么不能调试
    Codeforces Round #378 (Div. 2) D. Kostya the Sculptor 分组 + 贪心
    51NOD 区间的价值 V2
    NYOJ 42 一笔画问题
    如何对二维字符数组进行排序
    hihoCoder 1383 : The Book List 北京网络赛
    利用IDA学习一个简单的安卓脱壳
    iOS APP可执行文件的组成
    Mac10.11 搭建php开发环境
  • 原文地址:https://www.cnblogs.com/lvhang/p/15064609.html
Copyright © 2011-2022 走看看