hdu 4611 Balls Rearrangement 多校第二场
来源:互联网 发布:mac os 10.13 cdr 编辑:程序博客网 时间:2024/06/05 16:04
模拟+数学
连续的一段可直接统计,需要算一下gcd,简单题
#include <cstdio>#include <cstring>#include <cstdlib>#include <algorithm>using namespace std;typedef __int64 lld;int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}int main(){ int T; scanf("%d",&T); while(T--) { int n,a,b; scanf("%d%d%d",&n,&a,&b); lld m=(lld)a/(lld)gcd(a,b)*(lld)b; lld num=(lld)n/m,sum=(lld)n%m; lld tmp=0,ans=0; for(lld i=0;i<m;)//求最小公倍数部分 { if(i%a==i%b) { i+=(lld)min(a-i%a,b-i%b);//余数相同部分,直接跳过,i移到i%a==0或i%b==0 最近的那个//min(a-i%a,b-i%b) 就是需要移到的最小值,下面都是一样的。 } else { tmp+=abs((lld)(i%a-i%b))*(lld)min(a-i%a,b-i%b); //加上这一段的(差值*段长) i+=(lld)min(a-i%a,b-i%b); } } for(lld i=0;i<sum;) //余数部分 { if(i%a==i%b) { i+=(lld)min(a-i%a,b-i%b); } else { ans+=abs((lld)(i%a-i%b))*(lld)min((lld)min(a-i%a,b-i%b),sum-i); i+=(lld)min((lld)min(a-i%a,b-i%b),sum-i); } } ans+=tmp*num; printf("%I64d\n",ans); }}
- hdu 4611 Balls Rearrangement 多校第二场
- 2013 多校第二场 hdu 4611 Balls Rearrangement
- HDOJ 4611 - Balls Rearrangement/2013多校联合第二场A 分情况处理
- hdu 4611 Balls Rearrangement
- hdu 4611 Balls Rearrangement
- hdu-4611-Balls Rearrangement
- HDU 4611 Balls Rearrangement
- HDU 4611 Balls Rearrangement
- hdu-4611-Balls Rearrangement
- hdu 4611 Balls Rearrangement
- 4611 hdu Balls Rearrangement
- HDU 4611 Balls Rearrangement
- HDU 4611 Balls Rearrangement
- hdu 4611Balls Rearrangement
- 2013 多校联合 2 A Balls Rearrangement (hdu 4611)
- HDU 4611Balls Rearrangement(思维)
- hdu - 4710/4611 - Balls Rearrangement
- [hdu 4611]Balls Rearrangement 数论
- 移动开发:iOS学习之 编译错误汇总
- 3468 A Simple Problem with Integers 线段树
- JSON文档解析 三种方法
- 为什么Java byte 类型的取值范围是-128~127
- python循环for,range,xrange;while
- hdu 4611 Balls Rearrangement 多校第二场
- GCD 扩展GCD 快速GCD 模线性方程 模线性方程组 单独求欧拉函数 递推求欧拉函数
- 贪心——NYOJ 题目236 心急的C小加
- hdu 3790 最短路径问题 (dijkstra算法+memset()用法)
- POJ 2954 Triangle (pick 定理)
- 安卓调试时ADB server didn't ACK的终极解决办法
- 马的走法
- 配置普通用户有使用sudo命令的权限
- Android apk反编译和odex转dex