hdu-4790
来源:互联网 发布:淘宝上的斗神摇杆 编辑:程序博客网 时间:2024/04/29 12:18
题解参见:http://www.cnblogs.com/kuangbin/p/3429062.html
WA了n次
要注意的地方:
1)如果不好判断哪里会发生整数溢出的话,最好全部开long long
2)如果用题解中的方法,边界计算要小心,最好多出几组特例
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <vector>#include <queue>#include <stack>#include <algorithm>using namespace std;#define F(i, n) for (int i=0;i<(n);++i)#define LBIT(x) x&-xint T;long long a, b, c, d, p, m;long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b);}template<class T>void myswap(T * a, T * b) { T tmp = *a; *a = *b; *b = tmp;}int main(){ freopen("input.in", "r", stdin); //freopen("output.out", "w", stdout); int T; cin >> T; F(cases,T) { cin >> a >> b >> c >> d >> p >> m; if (d - c + 1 < b - a + 1) { myswap<long long>(&a, &c); myswap<long long>(&b, &d); } long long pos1 = a + c; long long pos2 = b + c - 1; long long pos3 = b + c; long long pos4 = a + d + 1; long long pos5 = b + d; long long sum1 = 0; long long sum2 = 0; long long sum3 = 0; int _m = pos1 % p; if (_m < m) pos1 += m - _m; else if (_m > m) pos1 += p + m - _m; if (pos1 < b + c) { long long n = (pos2 - pos1) / p + 1; long long a0 = pos1 - (a + c) + 1; sum1 = a0 * n + (n-1) * n / 2 * p; } else sum1 = 0; _m = pos3 % p; if (_m < m) pos3 += m - _m; else if (_m > m) pos3 += p + m - _m; if (pos3 <= a + d) { sum2 = (long long)( (a + d - pos3) / p + 1 ) * (b - a + 1); } else sum2 = 0; _m = pos4 % p; if (_m < m) pos4 += m - _m; else if (_m > m) pos4 += p + m - _m; if (pos4 <= pos5) { long long n = (pos5 - pos4) / p + 1; long long a0 = b + d -pos4 + 1; sum3 = a0 * n + (n-1) * n / 2 * (-p); } else sum3 = 0; long long sum = sum1 + sum2 + sum3; long long tot = (long long)(b - a + 1) * (d - c + 1); if (sum > 1) { long long g = gcd(sum, tot); sum /= g; tot /= g; } else if (sum == 0) { sum = 0; tot = 1; } cout << "Case #" << cases + 1 << ": " << sum << '/' << tot << endl; //cout << sum * 1.0 / tot << endl; } return 0;}
0 0
- hdu-4790
- HDU 4790
- hdu 4790 Just Random
- hdu 4790 Just Random
- HDU 4790 Just Random
- HDU - 4790 Just Random
- HDU 4790 Just Random
- HDU 4790 Just Random
- HDU 4790 找规律
- hdu 4790 数学
- hdu 4790 Just Random
- hdu 4790 Just Random
- hdu 4790 Killing Monsters
- HDU 4790 Just Random
- HDU 4790 Just Random
- HDU-4790 Just Random
- HDU - 4790(规律求和)
- HDU 4790 Just Random
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- UC笔试题(一)
- python中PIL库在使用时出现The _imagingft C module is not installed错误
- 未能加载文件或程序集“Enyim.Caching”或它的某一个依赖项。未能验证强名称签名。此程序集可能已被篡改,或者已被延迟签名,但没有用正确的私钥进行完全签名。 (异常来自 HRESULT:0x80
- ios开发之Swift学习指南(一)
- hdu-4790
- QRadioButton类中Toggled()信号的使用方法
- 关于php和mysql
- 寄存器位域、位操作等示例
- 《程序员》2014年6月刊
- Navicat建立索引
- C++11的chrono库,可实现毫秒微秒级定时
- pgsql权限
- SpringSecurity最基本的配置使用