专栏文章

题解:P1001 A+B Problem

P1001题解参与者 13已保存评论 14

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
14 条
当前快照
1 份
快照标识符
@mipczeq2
此快照首次捕获于
2025/12/03 09:59
3 个月前
此快照最后确认于
2025/12/03 09:59
3 个月前
查看原文

写在前面的话

注意,如果你是新手,首先就是养成习惯:
  1. 基础代码模板一定要记牢。
  2. 一定要记得打分号

本题代码

CPP
#include <iostream>
using namespace std;

int main() {
    int a,b;       //定义变量 a, b
    cin >> a >> b; //输入 a, b
    cout << a+b;   //输出 a+b 
    return 0;      //不要忘记这一行,建议再打初始代码时,提前写好
}

接下来的不是新手可以不用看了

整活时间到!

a+b=(a+b)×1a+b = (a+b) \times 1
众所周知
limx0sinxx=1\lim_{x\rightarrow0} \frac{\sin x}{x} = 1
代入得
a+b=limx0sinxx×(a+b)a+b = \lim_{x\rightarrow0} \frac{\sin x}{x} \times (a+b)
sin\sin 我们可以用泰勒级数实现
我们把 xx 取小亿点点,精度可能是过得去的。
代码如下:
CPP
#include<bits/stdc++.h>
#define double long double
using namespace std;
double Sin(double x) {
    double ret = x, a = x, p = x * x, cur = 1; 

    for (int i = 1; i <= 100; i++) { 
        cur *= (2 * i) * (2 * i + 1); a *= p / cur;
        if (i % 2 == 0) ret += a;
        else  ret -= a;
    }
    return ret;
}
int main() {
	int a, b; cin >> a >> b;
	double x = 0.00000001;
	double q = Sin(x) / x;
	int ans = int(ceil(q*a+q*b));
	if(ans < -1) ans--;
	cout << ans;
	return 0;
}

评论

14 条评论,欢迎与作者交流。

正在加载评论...