算法提高 勾股数
时间限制: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判断是否为素数,如果是进行累加。
④输出比自然数小于等于的素数和。
网友评论