第一章顺序结构练习


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


1.已知等差数列的首项为a,尾项为b,公差为d,求该数列的和。(0<a,b,d<1E18)

输入格式:第一行输入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 <stdio.h>

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 <stdio.h>
#include <math.h>

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;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值