第一次博客。。POJ-2499
2017-02-03 16:12
183 查看
定义一个二叉树,根节点(1,1),设根节点(a,b),左儿子是(a+b,b),右儿子(a,b+a)
现在个你一个点(i,j),问从(1,1)走到(i,j)要向左多少次,向右多少次?
input:
3
42 1
3 4
17 73
output:
Scenario #1:
41 0
Scenario #2:
2 1
Scenario #3:
4 6
不是真的二叉树,再想想怎么做。在看题的是向左,向右多少次,我一想,那我倒着找回去不就好了。。。。结果TLE。。。后来知道了,用减法倒着推回去,太复杂了,而平时既然加法能用乘法优化,那我减法为什么不用除法呢?结果又TLE了。。。经过巨巨指导,才明白,是忘了取膜和除法里0的影响,最终AC了。。。
现在个你一个点(i,j),问从(1,1)走到(i,j)要向左多少次,向右多少次?
input:
3
42 1
3 4
17 73
output:
Scenario #1:
41 0
Scenario #2:
2 1
Scenario #3:
4 6
代码:
include<iostream> include<cmath> include<cstring> include<algorithm> using namespace std; int main() { int N = 0; int i = 0; cin >> N; while(N > 0) { N--; i++; int a = 0; int b = 0; cin >> a >> b; int l = 0; int r = 0; while(a != b) { int temp = 0; if(a > b) { temp = a%b; if(temp == 0) { l += a/b-1; a = 1; } else { l += a/b; a = temp; } } else { temp = b%a; if(temp == 0) { r += b/a-1; b = 1; } else { r += b/a; b = temp; } } } cout << "Scenario #" << i << ":" << endl << l << " " << r << end; } }
理解
这并不是真的二叉树,再想想怎么做。在看题的是向左,向右多少次,我一想,那我倒着找回去不就好了。。。。结果TLE。。。后来知道了,用减法倒着推回去,太复杂了,而平时既然加法能用乘法优化,那我减法为什么不用除法呢?结果又TLE了。。。经过巨巨指导,才明白,是忘了取膜和除法里0的影响,最终AC了。。。
相关文章推荐
- POJ 2236 Wireless Network 第一次做并查集,第一次写博客
- 第一次写博客
- 第一次尝试用 Live Writer 写博客
- 第一次写博客,作为菜鸟,从小学的小九九开始,JS
- 第一次创建技术博客
- 第一次写博客
- 第一次开通博客纪念一下
- 我的第一次博客生涯
- 第一次面试,第一次写博客20170928
- 最近做了一个Mqtt消息推送,和大家分享分享心得,以防以后搞忘了,新人第一次写博客,大神勿喷。
- 第一次写博客
- CSDN上的第一篇博客,也是第一次写博客
- 第一次写博客
- 纪念一下第一次写博客
- 第一次写博客
- xdoj 1000(第一次写博客)
- 冒泡排序&第一次在CSDN上写博客
- 第一次进入博客
- 哈哈 第一次开博客
- 第一次写博客