hdu 5646 拆数积最大 数学
来源:互联网 发布:windows mobile 编辑:程序博客网 时间:2024/06/15 09:52
将一个数拆开,然后求乘积
hdu 5646
1. 拆成若干实数
利用柯西不等式以及对
2. 拆成若干整数
3 与 e较为接近,所以选择3,然后不足的选择2
3. 拆成k个整数
首先
4. 拆成k个不相同的整数
方案如下
1. 如果能拆成 2,3,4,5,..n这样连续的,就直接这样拆
2. 如果,拆成 2,3,4,5,…… n,剩余t,0
LL n,k;LL Binary(LL nn){ LL l = k,r = 1e9; while(r>=l) { LL mid = (r+l)>>1; if(mid*(mid+1)/2 - (mid-k)*(mid-k+1)/2 > nn) r = mid-1; else l = mid+1; } return r;}int main(void){ int T; cin>>T; while(T--) { cin>>n>>k; if(n<k*(k+1)/2) { printf("-1\n"); continue; } LL t = Binary(n); LL ans = 1; if(n == t*(t+1)/2-(t-k)*(t-k+1)/2) { for(LL i = t-k+1; i <= t; ++i) ans = ans*i%mod; cout<<ans<<endl; } else { LL tmp = n - t*(t+1)/2 + (t-k)*(t-k+1)/2; for(LL i = t-k+1; i <= t; ++i) ans = ans*(i + (i > t-tmp?1:0)) %mod; cout<<ans<<endl; } } return 0;}
相关问题 ,整数拆分求中类,组合数学
阅读全文
0 0
- hdu 5646 拆数积最大 数学
- HDU:5969 最大的位或(数学,二进制)
- hdu 5646 Partition数学+构造
- HDU 5646 DZY Loves Partition (数学)
- BC Round #76 HDU 5646(数学)
- HDU 5646 DZY Loves Partition(数学)
- 算法训练 最大最小公倍数 【数学】
- [数学理论]最大熵模型
- hdu 4336 数学期望
- hdu 4342 数学规律
- HDU-1286(数学)
- HDU-1124(数学技巧)
- [数学] hdu 4377
- hdu 4373 组合数学
- HDU 1099 数学计算
- hdu 3944 组合数学
- hdu 4045 组合数学
- hdu 2086 数学归纳法
- 【Leetcode】252,253 meeting room系列 区间问题
- UVA
- Python之——Eclipse +PyDev开发python,import其他模块时eclipse会报错,运行却没有问题
- Lua泛型for
- Codeforces 869C ( Codeforces Round #439 (Div. 2) ) The Intriguing Obsession 组合数学
- hdu 5646 拆数积最大 数学
- 5. 抽象工厂模式
- QT的信号和槽函数的使用(一)
- 17.10.7日报
- PHP explode() 函数
- [BZOJ2957]楼房重建-线段树
- 如何使用mybatis调用存储过程
- C++简单的矩阵运算
- 基于IDSS和Machine Learning的零售金融大数据分析(一)