牛客题解 | 单组_spj判断数组之和

题目

题目链接

解题思路

后台有spj代码,能对同学们的输出数据进行校验,符合条件即可通过。
附赠 spj 代码

#include <iostream>
#include <fstream>
#include <string>
#include <cctype>
using namespace std;
bool check(string &s)
{
	if(s.length()>10)
		return false;
	if(s.front()=='0')
		return false;
	for(char &c:s)
	{
		if(c=='-')
			return false;
		else if(!isdigit(c))
			return false;
	}
	return true;
}
int main(void)
{
	// 记得重命名为 checker.cc 
	ifstream in,out,user_out;
	in.open("input");
	out.open("output");
	user_out.open("user_output");
	string s;
	long long sum=0,res;
	int n,m,i;
	in>>n>>m;
	for(i=1;i<=n;++i)
	{
		if(!(user_out>>s))
			return 1;
		if(!check(s))
			return 1;
		res=stoll(s);
		sum+=res;
	}
	if(sum!=m)
		return 1;
	if(user_out>>s)
		return 1;
	return 0;
}

算法及复杂度

  • 算法:无。
  • 时间复杂度: O ( n ) \mathcal{O}(n) O(n)
  • 空间复杂度: O ( n ) \mathcal{O}(n) O(n)
要计算一个整数半径的圆面积,并允许在 $10^{-3}$ 范围内的浮点误差,可以通过选择合适的浮点数据类型和计算公式来实现。以下是具体方法和示例代码。 ### 计算公式 圆的面积公式为: $$ A = \pi r^2 $$ 其中 $r$ 是给定的整数半径,$\pi$ 是圆周率,其值约为 3.14159265358979323846。 为了确保浮点误差控制在 $10^{-3}$ 范围内,应使用精度较高的浮点类型,例如 `double`(在大多数编程语言中提供约15位有效数字)[^2]。 ### 示例代码 #### Java 实现 ```java public class CircleArea { public static void main(String[] args) { int radius = 5; // 整数半径 double pi = Math.PI; double area = pi * radius * radius; // 计算面积 System.out.printf("Circle area: %.6f\n", area); // 输出保留六位小数 } } ``` #### C 实现 ```c #include <stdio.h> #include <math.h> int main() { int radius = 5; // 整数半径 double pi = M_PI; double area = pi * radius * radius; // 计算面积 printf("Circle area: %.6lf\n", area); // 输出保留六位小数 return 0; } ``` #### Python 实现 ```python import math radius = 5 # 整数半径 area = math.pi * radius * radius # 计算面积 print(f"Circle area: {area:.6f}") # 输出保留六位小数 ``` ### 浮点误差分析 在上述代码中,使用了 `double` 或等效的高精度浮点类型进行计算,以减少浮点运算中的舍入误差。输出结果保留六位小数,可以直观地观察到是否满足 $10^{-3}$ 的误差要求。若需要进一步验证误差范围,可以通过与精确值比较或使用误差分析函数进行评估[^1]。 ### 总结 通过选择适当的浮点类型和格式化输出方式,可以有效地控制计算结果的误差范围。上述代码实现了圆面积的计算,并确保了在 $10^{-3}$ 以内的精度要求。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值