BZOJ2134 单选错位

= =是道沙茶题，直接模拟即可。。。

 1 /**************************************************************
2     Problem: 2134
3     User: rausen
4     Language: C++
5     Result: Accepted
6     Time:1292 ms
7     Memory:78932 kb
8 ****************************************************************/
9
10 #include <cstdio>
11 #include <cmath>
12
13 using namespace std;
14 typedef double lf;
15 typedef long long ll;
16 const int N = 10000005;
17 const ll Mod = 100000001;
18 ll n, a, b, c, d[N];
19
21     int x = 0;
22     char ch = getchar();
23     while (ch < '0' || '9' < ch)
24         ch = getchar();
25     while ('0' <= ch && ch <= '9') {
26         x = x * 10 + ch - '0';
27         ch = getchar();
28     }
29     return x;
30 }
31
32 int main() {
33     int i;
35     for (d[1] = read(), i = 2; i <= n; ++i)
36         d[i] = (d[i - 1] * a + b) % Mod;
37     for (i = 1; i <= n; ++i)
38         d[i] = (d[i] % c) + 1;
39     d[n + 1] = d[1];
40     lf ans = 0;
41     for (i = 1; i <= n; ++i)
42         if (d[i] <= d[i + 1])
43             ans += (lf) 1.0 / d[i + 1];
44         else
45             ans += (lf) 1.0 / d[i];
46     printf("%.3lf", ans);
47     return 0;
48 }
View Code

By Xs酱~ 转载请说明 博客地址：http://www.cnblogs.com/rausen
posted on 2014-11-17 13:09  Xs酱~  阅读(135)  评论(0编辑  收藏  举报