埃及数字的代码实现
来源:互联网 发布:五毛钱特效软件电脑 编辑:程序博客网 时间:2024/05/02 09:10
</pre><p>中间居然用int会数据溢出,注意用LL就行了,IDA*算法 深度迭代的应用<em></em></p><p></p><pre name="code" class="cpp">#include<cstdio>#include<iostream>#include<cstring>using namespace std;unsigned long long u,d,cnt=1,ans[1000],best[1000];unsigned long long gcd(unsigned long long a,unsigned long long b){if(b>a)a^=b^=a^=b;return b>0?gcd(b,a%b):a;}void pure(unsigned long long&a,unsigned long long&b){unsigned long long c=gcd(a,b);a=a/c;b=b/c; //对ab进行通分}unsigned long long okmin(unsigned long long u,unsigned long long d){unsigned long long i=0;while(1){if(i*u>=d){return i;}i++;}}void better(unsigned long long maxd){ //更新较好的答案bool jd=true;for(unsigned long long i=0;i<=maxd;i++)cout<<ans[i]<<" ";cout<<"\n";for(int i=maxd;i>=0;i--){if(ans[i]>best[i]){jd=true;break;}}if(jd||best[0]==-1){for(unsigned long long i=0;i<=maxd;i++){best[i]=ans[i];}}}bool t=false; //作为找到解的标志void dfs(unsigned long long maxd,unsigned long long curd,unsigned long long maxn){if(maxd<curd){better(maxd);t=true;return;}unsigned long long g=okmin(u,d);g=max(g,maxn+1);while((maxd-curd+1)*d>=u*g){ //基于深度的枝剪unsigned long long tu=u,td=d;ans[curd]=g;u=u*g-d;d=td*g;pure(u,d);dfs(maxd,curd+1,g);u=tu;d=td;g++;}}int main(){while(cin>>u>>d){t=false;pure(u,d);cout<<"case "<<cnt++<<" \n";unsigned long long maxd=-1;memset(best,-1,sizeof(best));while(1){maxd++;unsigned long long tem=okmin(u,d);dfs(maxd,0,tem-1);if(t)break;}for(unsigned long long i=0;i<=maxd;i++)cout<<best[i]<<" ";}}
0 0
- 埃及数字的代码实现
- 埃及数字 迭代深搜
- 4位吸血鬼数字的实现代码与解释
- 剑指offer:旋转数组的最小数字 代码实现
- 剑指offer:旋转数组的最小数字 代码实现
- java如何实现的简单猜数字游戏代码
- 简单实用jquery实现数字读秒的倒计时代码
- Unity 2048数字控件Num的代码实现
- 分别实现数字时钟和日历的js代码
- 2.使用线程实现数字与代码的交替打印
- 埃及艳后的鸡蛋美容术 [转]
- 古老而又神秘的国家----------埃及游
- 埃及狮身人面像的鼻子哪去了
- 真分数转埃及分数的和 (贪心)
- 抛砖引玉——实现LISTVIEW点击COLUMN排序的代码,可实现按时间,字符,数字
- 数字时钟的实现
- 猜数字的实现
- 代码实现EditText只能输入数字
- STM32烧熔丝
- eclipse开发stm32(下)
- 合并两个字符集合为一个新集合,每个字符串在新集合中仅出现一次,函数返回新集合中字符串。
- Ajax+Struts2实现验证码验证功能实例代码
- Java Web前端到后台常用框架介绍
- 埃及数字的代码实现
- 属性动画---位置
- 路由学习(2):动态加载新闻详细页
- ZjDroid工具原理解析和使用
- Java开发工具_Eclipse中debug的基本使用
- c语言文件操作函数大全
- Android四大组件之Service(二)远程服务(AIDL进程间通信)
- 金秋“论道”分享——《IPTV直播+技术平台浅析》
- vs2008有关子对话框重新以及窗口时间响应在哪里找