蓝杯三十七

算法提高 勾股数 

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

提交此题   

问题描述

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

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

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

输出格式

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

样例输出

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

3 4 5

5 12 13

6 8 10

#include 

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  

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

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判断是否为素数,如果是进行累加。

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

 

你可能感兴趣的:(蓝杯三十七)