hdu 4611
2013hdu多校联赛二的第一题,当时队友说两个盒子个数的最小公倍数是周期,
如果两个数的最小公倍数比较大的时候(最大是9999900000),如果遍历求的话肯定会超时
当时想找各种规律,都没找到,最后我想到了一种遍历的优化,就是每次不是只增加一个数,
求出最大mi个球在两个盒子的序号都是递增的,那么每次只需要加上第一项差值的mi陪,
球的序号加上mi,肯定比每次加1要快,把遍历的区间缩短了。
结果一看求出最大的9999900000答案瞬间出来了,信心大增,结果wrong了几次
当时有个想法把变量都改成64位的,以前做题的时候遇到过这样的问题,
如果64位跟int混合运算会出现错误,改完之后abs函数有个警告,就又改回去了,
当时有几个答案跟暴力出来的结果不一样总以为有什么情况没考虑到,就没太在意这个问题,
今天改完64位,一下就A了,那个后悔啊,,,,,,,,,,,,,,,,,,,,,,,,
#include <stdio.h>
#include <string.h>
__int64 gcd(__int64 a,__int64 b)
{
if(b==0)return a;
else return gcd(b,a%b);
}
__int64 abs(__int64 a)
{
if(a>0)return a;
return -a;
}
__int64 cont(__int64 n,__int64 a,__int64 b)
{
__int64 ans,i,mi;
i=0;ans=0;
while(i<n)
{
mi=(a-i%a)>(b-i%b)?(b-i%b):(a-i%a);
if(i+mi>=n)
mi=n-i;
ans+=abs(i%a-i%b)*mi;
i+=mi;
}
return ans;
}
int main()
{
int T;
__int64 n,a,b,t;
__int64 ans;
scanf("%d",&T);
while(T--)
{
scanf("%I64d%I64d%I64d",&n,&a,&b);
t=gcd(a,b);
t=a*b/t;
if (t>=n) ans=cont(n,a,b);
else ans=cont(t,a,b)*(n/t)+cont(n%t,a,b);
printf("%I64d\n",ans);
}
return 0;
}
hdu 4611的更多相关文章
- hdu 4611 Balls Rearrangement
http://acm.hdu.edu.cn/showproblem.php?pid=4611 从A中向B中移动和从B中向A中移动的效果是一样的,我们假设从B中向A中移动 而且A>B 我们先求出所 ...
- HDU 4611 Balls Rearrangement (数学-思维逻辑题)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4611 题意:给你一个N.A.B,要你求 AC代码: #include <iostream> ...
- HDU 4611 Balls Rearrangement 数学
Balls Rearrangement 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4611 Description Bob has N balls ...
- HDU 4611 - Balls Rearrangement(2013MUTC2-1001)(数学,区间压缩)
以前好像是在UVa上貌似做过类似的,mod的剩余,今天比赛的时候受baofeng指点,完成了此道题 此题题意:求sum(|i%A-i%B|)(0<i<N-1) A.B的循环节不同时,会有重 ...
- 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 ...
- 【 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. ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
随机推荐
- Linux入门基础 #8:Linux拓展权限
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...
- FlexSlider是一个非常出色的jQuery滑动切换插件
FlexSlider是一个非常出色的jQuery滑动切换插件,它支持所有主流浏览器,并有淡入淡出效果.适合所有初级和高级网页设计师使用.不过很多人都只是使用默认的参数,今天来说说具体的参数来给大家看看 ...
- hbase权威指南学习笔记--过滤器
1.使用hbase是shell客户端进行过滤查询 scan 'testtable',{COLUMNS=>'colfam1:col-0',FILTER=>RowFilter.new(Comp ...
- Transition 1
W3C标准中对css3的transition这是样描述的:“css的transition允许css的属性值在一定的时间区间内平滑地过渡.这种效果可以在鼠标单击.获得焦点.被点击或对元素任何改变中触发, ...
- iOS nav加角标
写一个类别加上就可以啦 #import "UIBarButtonItem+Badge.h" #import "BadgeView.h" #import < ...
- C#避免过长的IF和Switch分支的方法
C#避免过长的IF和Switch分支的方法 1.最蠢形态 //很丑有没有! //这个分支要是一两个还是可以接受的 class Program { static void Main(string[] a ...
- poi HSSFRichTextString 对cell中的每一段文字设置字体
HSSFRichTextString ts= new HSSFRichTextString(" 经审核,我司已同意其出库申请.请你部按规定将托管银行承兑汇票办理出库." + &qu ...
- Qt Library 链接库
官方教程:http://wiki.qt.io/How_to_create_a_library_with_Qt_and_use_it_in_an_application http://qimo601.i ...
- oracle日记
win7旗舰版安装oracle11g 64位用sql plus可以登录 但用pl/sql dev报错ORA-12560 小型数据库:access.foxbase 中型数据库:mysql.sqlserv ...
- Linux的用户和用户组
/etc/group 文件存储了所有的用户和用户组信息 存储格式: 组名:组密码占位符:组编号:组中所有用户 root:x:0: mail:x:12:postfix ... 说明: root: ...