蓝杯三十七

作者: 逍遥_9353 | 来源:发表于2018-02-02 19:57 被阅读10次

    算法提高 勾股数 

    时间限制:1.0s  内存限制:256.0MB

    提交此题   

    问题描述

      勾股数是一组三个自然数,a < b < c,以这三个数为三角形的三条边能够形成一个直角三角形

      输出所有a + b + c <= 1000的勾股数

      a小的先输出;a相同的,b小的先输出。

    输出格式

      每行为一组勾股数,用空格隔开

    样例输出

    例如,结果的前三行应当是

    3 4 5

    5 12 13

    6 8 10

    #include<stdio.h> 

    int main() 

        int i,j,k; 

        for(i=1;i<1000;i++) 

        { 

            for(j=i;j<1000;j++) 

            { 

                for(k=j;k<1000;k++) 

                { 

                    if(i+j+k<=1000 && i*i+j*j==k*k) 

                    { 

                        printf("%d %d %d\n",i,j,k); 

                    } 

                } 

            } 

        } 

        return 0; 

    思路分析:

    ①定义变量:三个自然数;

    ②通过for语句进行三重循环(每个循环至1000);

    ③if语句通过两个条件判断是否为勾股数,如果是,则输出三个自然数。

    算法提高 字符串比较 

    时间限制:1.0s  内存限制:512.0MB

    提交此题   

    独立实现标准字符串库的strcmp函数,即字符串比较函数,从键盘输入两个字符串,按字典序比较大小,前者大于后者输出1,前者小于后者输出-1,两者相等输出0。

    样例输入:

    apple one

    样例输出:

    -1

    样例输入:

    hello he

    样例输出:

    1

    样例输入:

    hello hello

    样例输出:

    0

    #include <iostream> 

    using namespace std; 

    int main() { 

        string a, b; 

        cin >> a >> b; 

        int lena = a.length(); 

        int lenb = b.length(); 

        int len = lena > lenb ? lena : lenb; 

        for(int i = 0; i < len; i++) { 

            if(a[i] > b[i]) { 

                cout << "1"; 

                return 0; 

            } 

    if(a[i] < b[i]) { 

                cout << "-1"; 

                return 0; 

            } 

        } 

        if(lena == lenb) { 

            cout << "0"; 

        } else if(lena > lenb) { 

            cout << "1"; 

        }else { 

            cout << "-1"; 

        } 

        return 0; 

    思路分析:

    ①定义变量:两组字符串;

    ②输入两组字符串;

    ③if语句比较其大小,分为3种情况:前者大于后者输出1,前者小于后者输出-1,两者相等输出0。

    素数求和 

    时间限制:1.0s  内存限制:256.0MB

    提交此题   

    问题描述

      ?输入一个自然数n,求小于等于n的素数之和

    样例输入

    2

    样例输出

    2

    数据规模和约定

      测试样例保证 2 <= n <= 2,000,000

    #include <iostream>

    using namespace std;

    int v[2000001];

    int main() {

        int n;

        cin >> n;

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

            if(v[i] == 1)

                continue;

      for(int j = i * i; j <= n; j = j + i)

                    v[j] = 1;

        }

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

            if(v[i] == 0) {

                cnt += i;

            }

        }

        cout << cnt;

        return 0;

    }

    思路分析:

    ①定义变量:一个自然数,循环次数,素数和;

    ②输入自然数;

    ③通过for语句,if判断是否为素数,如果是进行累加。

    ④输出比自然数小于等于的素数和。

     

    相关文章

      网友评论

        本文标题:蓝杯三十七

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