TOJ 4115 Find the number
2015-07-09 19:57
316 查看
I forget mark value = minValue ,so I get WA one day.So sad a story.
The portal:http://acm.tju.edu.cn/toj/showp4115.html
The portal:http://acm.tju.edu.cn/toj/showp4115.html
#include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> double minValue; long long Mod = 1e9 + 7; int prime[14] = {3,5,7,11,13,17,19,23,29,31,37,41,43,47}; int best[14],temp[14]; void DFS(const int & depth,const int & now,const double & value){ if(value >= minValue){ return; } if(now == 1){ if(value < minValue){ minValue = value ; for(int i=0;i<14;i++){ best[i] = temp[i]; } } return ; } if(depth >= 14) return ; for(int i=1;i<=sqrt(now);i++){ if(now % i == 0){ int t = i; if(t > 1){ temp[depth] = t - 1; DFS(depth+1,now/t,value+(t-1)*log(prime[depth])); temp[depth] = 0; } t = now / i; if(t > 1){ temp[depth] = t - 1; DFS(depth+1,now/t,value+(t-1)*log(prime[depth])); temp[depth] = 0; } } } } long long Quick_pow(const int &x,int k){ long long ret = 1,base = x; while(k){ if(k&1){ ret = (ret * base) % Mod; } base = (base * base) % Mod; k >>= 1; } return ret; } int main(void){ //freopen("a.in","r",stdin); int n; while(scanf("%d",&n)!=EOF){ memset(best,0,sizeof(best)); memset(temp,0,sizeof(temp)); minValue = (n-1)*log(3.0); best[0] = n - 1; DFS(0,n,0); long long ans = 1; for(int i=0;i<14;i++){ ans = (ans * Quick_pow(prime[i],best[i])) % Mod; } printf("%lld\n",ans); } return 0; }
相关文章推荐
- PHP学习笔记
- 看看GNU编译器都生成了什么样的汇编代码
- Deep Learning(深度学习)学习笔记整理系列之(八)
- 转载:Pixhawk源码笔记十:代码调度,使之定时运行
- java课程系列笔记(1)
- Ruby on Rails 3 Style Guide。
- 连续子数组的最大和
- Deep Learning(深度学习)学习笔记整理系列之(七)
- 发布新闻
- 转载:Pixhawk源码笔记九:添加新的飞行模式
- dede 忘记密码在数据库中修改方法
- Java中常见的IO流及其使用
- MySQL 初步
- Deep Learning(深度学习)学习笔记整理系列之(六)
- WPF内部DeliverEvent读锁和PrivateAddListener写锁导致死锁
- Dirichlet Process 和 Dirichlet Process Mixture模型
- 转载:Pixhawk源码笔记八:添加新的参数
- 转载:Pixhawk源码笔记七:姿态控制预览
- 【小练习】“表格”制作及答案
- Avoid hardcoding the debug mode; leaving it out allows debug and release builds to automatically a