第一章顺序结构练习

第一章 顺序结构练习

  • ❥(^_-) 第一题 等差数列求和
  • ❥(^_-)第二题 两点间距离


❥(^_-) 第一题 等差数列求和


1.已知等差数列的首项为a,尾项为b,公差为d,求该数列的和。(0
输入格式:第一行输入3个整数分别表示首项a、尾项b和公差d。
输出格式:只有一个数字,表示该数列的和。

输入样例1:
1 100 1
输出样例1:
5050

输入样例2:
12 123456789123456789 3
输出样例2:
1283695871347673282


思路: 本题的数据比较大,已经超出了int的范围,所以此处数据类型需要定义成long long的类型。需要注意的是电脑CPU运算的次数大概在5 * 108左右,而此处的数据已经达到了1 *1018,所以循环是无法解决的。此处快速的方法是使用等差数列求和的高斯公式。


代码:

#include 

int main()
{
	long long int a, b, d, s, n;    // s表示和,n表示数列的项数
	scanf("%lld%lld%lld", &a, &b, &d);
	n = (b - a) / d + 1;    // 求出项数
	s = (a + b) * n / 2;    // 高斯公式求和
	printf("%lld", s);
	return 0;
}

❥(^_-)第二题 两点间距离


2.给定两个点P1和P2,计算P1与P2两点之间的距离d。

输入格式:一共两行,每行包含两个浮点数,表示一个点的坐标。
输出格式:一个浮点数,表示两点间的距离d,保留四位小数。

输入样例1:
1.0 7.0
5.0 9.0
输出样例1:
4.4721

输入样例2:
0 0
1 1
输出样例2:
1.4142


思路: 直接使用两点间的距离公式即可。
d = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 d= \sqrt[]{(x_2-x_1)^2+(y_2-y_1)^2} d=(x2x1)2+(y2y1)2


代码:

#include 
#include 

int main()
{
	double x1, x2, y1, y2, d;    // 定义两点坐标以及距离d
	scanf("%lf%lf", &x1, &y1);
	scanf("%lf%lf", &x2, &y2);
	d = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));    // 距离公式
	printf("%.4f", d);
	return 0;
}

你可能感兴趣的:(算法,c语言,数据结构)