P10562 [ICPC2024 Xi'an I] Triangle 题解
Cypher_404 · · 题解
P10562 [ICPC2024 Xi'an I] Triangle 题解
终于,第 5 篇了。
分析题意
题目给出
这三个点构成了一个直角三角形,需要你求出有多少个正方形在其中。(不足一个的如果占到了面积的
分析做法
看到
具体模拟思路:
算出直线
看到面积
四舍五入:给浮点数类型的数字加上
坑点:
-
卡精度:可以用 double 类型再乘上一个浮点数,如:
1.0000 。 -
读题不仔细或思考不全:答案可能会爆 int,
\frac {10^6 \times 10^6} {2} 达到了惊人的5\times 10^{11} 必须使用 long long。
Code:
#include<bits/stdc++.h>
using namespace std;
double k,n,m;//浮点数类型
long long ans;//答案:可能会炸 int
double opt=1.00000;//乘数,减小精度误差
int main()
{
cin>>n>>m;
k=n*opt/-m;//计算 k
for(int i=0;i<(int)m;i++)//从 1~m,虽然不加 (int) 也可以
{
double t=n+(2*i+1)*k/2;//简化以后的梯形公式
t+=0.5;//四舍五入
ans+=(long long)t;//强制转换成 long long 类型。实测:转换成 int 也可以。
}
cout<<ans;//输出
return 0;
}
其实还是比较简单的一道题,希望大家多多点赞。