zoj 2705 Dividing a Chocolate 斐波那契数列应用 (8-B)
来源:互联网 发布:c语言中求和的函数 编辑:程序博客网 时间:2024/05/01 17:31
题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1705
题解: 1 首先看到题目想起那个两个盒子之间把求放来放去,每次大的那边减去和小的那边一样数目的球,问能不能让所有球在一个盒子中去。 有点类似,但是这个题总数在减 少,而且这里存在最佳情况。
2 分析这个题要逆向思考,首先我们选择分某一边后,剩下那一边就完全没有用了,举案例这个例子。6*5 -> (6*3+6*2)-> (6*1+6*2)->(6*1+6*1) 每次分别吃掉6*2,6*1, 最后把相等的6*1吃掉,可以看到这里6并没有用, 定下来分5这条边以后6就没有他的事了。 然后看每组较大的数恰好是fibonacci数列, 假设最后变成m*b (我们分 n这条边) 那么一定有n=f(k)*b; 反之只要某一条边可以写成这样的形式,一定可以这样分下去。 然后吃掉的面积就是m*n-剩下的面积m*n/f(k). 只要找到尽量大的 f(k)就好了 ,再把f(k)整除m也行考虑进来就行了。
3 10^9以内fibonacci只有44个哦
代码:
#include<iostream>#include<vector>using namespace std;#define inf 1000000000int main(){ vector<int> v; v.push_back(1); v.push_back(1); for(int i=2;;i++) { int temp=v[i-1]+v[i-2]; if(temp>inf) break; else v.push_back(temp); } long long m,n; while(cin>>m>>n) { int index=0; for(int i=43;i>=0;i--) { if(m%v[i]==0||n%v[i]==0) { index=i; break; } } cout<<m*n-m*n/v[index]<<endl; cout<<endl; }}
- zoj 2705 Dividing a Chocolate 斐波那契数列应用 (8-B)
- zoj 2705 Dividing a Chocolate
- WHU 2013 Summer Contest #8 B Dividing a Chocolate
- ZOJ_2705_Dividing a Chocolate(递推斐波那契)
- ZOJ2705 Dividing a Chocolate
- 斐波那契数列的应用
- 算法应用-斐波那契数列
- 斐波那契数列及其应用
- 青蛙跳台阶(斐波那契数列应用)
- 斐波那契数列的应用(算法实现)
- 树上三角形(斐波那契数列神奇应用)
- 超级楼梯(斐波那契数列应用)
- 使用canvas 绘制斐波那契螺旋线(斐波那契数列的应用)
- 矩阵快速幂求解任意初始值f1,f2及a,b的斐波那契数列
- 2016"百度之星" - 资格赛(Astar Round1)Problem B(斐波那契数列)
- codeforces 225B(Well-known Numbers) 扩展斐波那契数列 Java
- 斐波那契数列的小应用
- 【水题算法】斐波那契数列的应用
- android编程之代码布局(三)
- java.util.concurrent学习笔记
- 端口扫描工具nmap的使用
- TCHAR 宽字节的sprintf
- 枚举子集
- zoj 2705 Dividing a Chocolate 斐波那契数列应用 (8-B)
- hdu 3552 I can di it!
- 7中android常用的提示框(AlertDialog)
- C程序调用shell脚本的三种方法
- c++设计准则(句句经典)
- visual c++ 6.0创建一个c++工程+外部函数应用举例
- c++文件写入读取
- 15个构建交互式图表的最佳jQuery插件
- 在mysql 中查询时间最大的一条记录