HDU 4379 The More The Better [枚举]

  枚举统计所有<=L/2的数,在找到是否存在一个>L/2的数使所有其它数加上它都不大于L即可。

  注意枚举的时候把模运算进行转化。

  

 1 #include <stdio.h>
 2 #include <string.h>
 3 #define INF 0x7fffffff
 4 typedef __int64 LL;
 5 int n, l, a, b, mod;
 6 int main(){
 7     //freopen("test.in", "r", stdin);
 8     while (scanf("%d%d%d%d%d", &n, &l, &a, &b ,&mod) != EOF) {
 9         int maxl = 0, ans = 0, minl = INF, half = l/2, val = b % mod;
10         a %= mod;
11         for (int i = 1; i <= n; i++) {
12             val += a;
13             if (val >= mod) val -= mod;
14             if (val <= half) {
15                 ans++;
16                 if (maxl < val) maxl = val;
17             } else if (minl > val) minl = val;
18         }
19         if ((LL)minl + maxl <= l) ans++;
20         printf("%d\n", ans);
21     }
22     return 0;
23 }
posted @ 2012-10-15 22:50  Burn_E  阅读(172)  评论(0编辑  收藏  举报