Codeforces Round #404 (Div. 2) C(数学)(精度)
2017-03-22 13:31
295 查看
题目链接
题目解答:显然,这是一道数学题。先考虑特殊情况,n<=m时,显然为第n天。当n>m时,经过计算可得,答案为ans = ceil((sqrt(8 * (n - m) + 1) - 1) / 2);
但是直接计算会有精度误差。所以我的解决办法是先将计算出来的结果减去100,再用一个whlie循环一个一个的加,并判断当前结果是否满足原始的算式。(微调结果))
PS: long double 好像不能用printf输出,还是用cout吧!
PPS:判断一个double变量是否为nan的方法:if(f != f) 。。。(nan默认的所有等于运算均为不等,所以可以通过与自身比较判断是否为nan)
代码如下;
题目解答:显然,这是一道数学题。先考虑特殊情况,n<=m时,显然为第n天。当n>m时,经过计算可得,答案为ans = ceil((sqrt(8 * (n - m) + 1) - 1) / 2);
但是直接计算会有精度误差。所以我的解决办法是先将计算出来的结果减去100,再用一个whlie循环一个一个的加,并判断当前结果是否满足原始的算式。(微调结果))
PS: long double 好像不能用printf输出,还是用cout吧!
PPS:判断一个double变量是否为nan的方法:if(f != f) 。。。(nan默认的所有等于运算均为不等,所以可以通过与自身比较判断是否为nan)
代码如下;
#include <cstdio> #include <iomanip> #include <iostream> #include <algorithm> #include <cmath> using namespace std; int main() { long double n,m; cin >> n >> m; if(n <= m) {cout << setprecision(0) << fixed << n << endl;return 0; long double ans = ceil((sqrt(8 * (n - m) + 1) - 1) / 2); if(ans > 100) ans-=100; while(ans * (ans + 1) < 2 * (n - m)) ans++; ans += m; cout << setprecision(0) << fixed << ans << endl; return 0; }
相关文章推荐
- codeforces round 404 div2 D Anton and School - 2 组合数学
- Codeforces Round #404 (Div. 2) D. Anton and School - 2(组合数学)
- Codeforces Round #362 (Div. 1) C PLEASE(组合数学,指数循环节)
- Codeforces Round #194 (Div. 1) A. Secrets 数学
- Codeforces Round #432 Div. 2 C. Five Dimensional Points(数学)
- Codeforces Round #415 (Div. 2)C. Do you want a date? (数学归纳)
- Codeforces Round #404 (Div. 2) 题解
- Codeforces Round #259 (Div. 1) A. Little Pony and Expected Maximum 数学公式结论找规律水题
- Codeforces Round #265 (Div. 2) 465A. inc ARG(数学题)
- Codeforces Round #172 (Div. 2) C. Rectangle Puzzle 数学题几何
- Codeforces Round #275 (Div. 2) B. Friends and Presents 二分+数学
- Codeforces Beta Round #85 (Div. 1 Only) C (状态压缩或是数学?)
- Codeforces Round #289 (Div. 2, ACM ICPC Rules) D. Restoring Numbers 构造 数学
- Codeforces Round #142 (Div. 2) B. T-primes (数学、O(n)筛素数)
- Codeforces Round #253 (Div. 2) D. Andrey and Problem (贪心+数学概率)
- Codeforces Round #272 (Div. 2) C Dreamoon and Sums(数学)
- Codeforces Round #272 (Div. 2) C. Dreamoon and Sums 数学
- Codeforces Round #360 (Div. 2) D 数学题
- Codeforces Round #428 (Div. 2) ( 组合数学)
- Codeforces Round #272 (Div. 2) D. Dreamoon and Sets (思维 数学 规律)