2013 Multi-University Training Contest 2 Balls Rearrangement
先算出lcm(a,b),如果lcm>=n,则直接暴力解决;否则分段,求出0-lcm内的+0-n%lcm内的值。
再就是连续相同的一起计算!!
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<vector>
#include<stdlib.h>
#define ll __int64
using namespace std;
ll gcd(ll a,ll b){
ll t;
if(a<b) swap(a,b);
while(b){
t=a;
a=b;
b=t%b;
}
return a;
}
ll lcm(ll a,ll b){
return a/gcd(a,b)*b;
}
ll cal(ll n,ll a,ll b){
ll ans=;
ll temp=;//记录i后面最小还有多少数在同一段
ll x=,y=,i=;//x记录i在a中的位置,y记录i在b中的位置,i指示当前位置
while (i<n){
temp = min(a-x,b-y);
if (i+temp>n) temp=n-i; //如果i+temp>n 则后面最多只有n-i个数了
ans += temp*abs(x-y); //记录连续一段的值
x = (x+temp)%a; //更新x的位置
y = (y+temp)%b; //更新y的位置
i += temp; //更新当前位置
}
return ans;
}
int main(){
int t;
ll n,a,b,c,ans;
cin>>t;
while (t--){
scanf("%I64d%I64d%I64d",&n,&a,&b);
if(a==b){
cout<<<<endl;
continue;
}
c=lcm(a,b);
if (c>=n) ans = cal(n,a,b);
else ans = cal(c,a,b)*(n/c)+cal(n%c,a,b);
printf("%I64d\n",ans);
}
return ;
}
2013 Multi-University Training Contest 2 Balls Rearrangement的更多相关文章
- 2013 多校联合 2 A Balls Rearrangement (hdu 4611)
Balls Rearrangement Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Othe ...
- HDU 4611 Balls Rearrangement(2013多校2 1001题)
Balls Rearrangement Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Othe ...
- hduoj 4710 Balls Rearrangement 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4710 Balls Rearrangement Time Limit: 6000/3000 MS (Java/Ot ...
- Integer Partition(hdu4658)2013 Multi-University Training Contest 6 整数拆分二
Integer Partition Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- Partition(hdu4651)2013 Multi-University Training Contest 5
Partition Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków
ACM ICPC Central Europe Regional Contest 2013 Jagiellonian University Kraków Problem A: Rubik’s Rect ...
- Partition(hdu4651)2013 Multi-University Training Contest 5----(整数拆分一)
Partition Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- 【 2013 Multi-University Training Contest 2 】
HDU 4611 Balls Rearrangement 令lcm=LCM(a,b),gcd=GCD(a,b).cal(n,a,b)表示sum(abs(i%a-i%b)),0<=i<n. ...
- 2013 Multi-University Training Contest 2
HDU-4611 Balls Rearrangement 题意:具体题意不大清楚,最后要处理一个这样的表达式:sum{ |i % a - i % b| },0 <= i < N 的取值很大 ...
随机推荐
- ●linux进程的查看与操作●
查看进程:ps -le | more ,ps -aux | more ,ps & 后台运行 jobs 查看后台进程 fg [n]调到前台 bg放到后台 ctrl +c 终止 ctrl ...
- Linux C 程序 进程间通信(20)
进程间通信 1.进程间通信的几种手段: (1).管道 数据只能由一个进程流向另一个进程(其中一个读管道,一个写管道),如果要建立全双工通信,需要建立两个管道 只能用于 ...
- SequoiaDB 与 Hive 集成
SequoiaDB与Hadoop部署 SequoiaDB与Hadoop在物理上部署方案如下图所示,部署建议如下: l SequoiaDB与Hadoop部署在相同的物理设备上,以减少Hadoop与Se ...
- KMP算法的理解
---恢复内容开始--- 在看数据结构的串的讲解的时候,讲到了KMP算法——一个经典的字符串匹配的算法,具体背景自行百度之,是一个很牛的图灵奖得主和他的学生提出的. 一开始看算法的时候很困惑,但是算法 ...
- Django Form的学习
django.forms 是Django处理form的库 本质上可以直接通过对HttpRequest达到同样的效果,但是django.from带来更便捷的处理方式.功能有几点 通过form类 ...
- WPF学习笔记 控件篇 属性整理【1】FrameworkElement
最近在做WPF方面的内容,由于好多属性不太了解,经常想当然的设置,经常出现自己未意料的问题,所以感觉得梳理下. ps:先补下常用控件的类结构,免得乱了 .NET Framework 4.5 Using ...
- 《C# 白话系列之——白话委托》读后记
今天在博客圆首页看到一篇文章:<C# 白话系列之——白话委托> http://www.cnblogs.com/djangochina/p/3410002.html#commentform ...
- C# 清楚Cookies
//销毁Cookies中的数据 if (Request.Cookies["Ticket"] != null) { HttpCookie mycookie; mycookie = R ...
- VBS基础篇 - Dictionary对象
Dictionary是存储数据键和项目对的对象,其主要属性有Count.Item.Key,主要方法有Add.Exists.Items.Keys.Remove.RemoveAll. '建立字典 Dim ...
- python学习小结8:I/O
文件I/O是Python中最重要的技术之一,在Python中对文件进行I/O操作是非常简单的. 打印到屏幕上 >>> print "python is really a g ...