POJ 2591 Set Definition(数论)
2015-08-28 09:38
232 查看
Description
定义一种集合,如果x属于这个集合,则2*x和3*x+1也属于这个集合,已知1属于这个集合,问这个集合从小到大第n个元素是多少(1<=n<=10000000),
Input
多组用例,每组一个整数n,以文件尾结束输入
Output
对于每组用例,输出该集合中第n个元素
Sample Input
100
254
Sample Output
418
1461
Solution
这个集合是通过集合里的每一个数×2,×3+1来扩展的,要想从小到大,从num[1]开始扩展时,由于×2,x3+1大小不同,所以num[]的下一个元素是这两个数的最小值。
Code
定义一种集合,如果x属于这个集合,则2*x和3*x+1也属于这个集合,已知1属于这个集合,问这个集合从小到大第n个元素是多少(1<=n<=10000000),
Input
多组用例,每组一个整数n,以文件尾结束输入
Output
对于每组用例,输出该集合中第n个元素
Sample Input
100
254
Sample Output
418
1461
Solution
这个集合是通过集合里的每一个数×2,×3+1来扩展的,要想从小到大,从num[1]开始扩展时,由于×2,x3+1大小不同,所以num[]的下一个元素是这两个数的最小值。
Code
#include<stdio.h> #define min(x,y) (x)<(y)?(x):(y) long f[10000001]; int main() { int n,i,x2,x3; x2=x3=1; f[x2]=f[x3]=1; for(i=2;i<10000001;i++) { f[i]=min(f[x2]*2+1,f[x3]*3+1); if(f[i]==f[x2]*2+1) x2++; if(f[i]==f[x3]*3+1) x3++; } while(scanf("%d",&n)!=EOF) printf("%ld\n",f ); return 0; }
相关文章推荐
- 在运行时加载XIB文件
- Struts Hello World Example
- jquery $(document).ready() 与window.onload的区别
- EJB简介
- UMCrashAnalyze总结
- 调用百度地图接口获取地理位置手机电脑通用
- JS日期的获取与加减
- java学习中易忽略的知识
- PPT控电脑端怎么样
- android adapter的notifyDataSetChanged不起作用
- POJ 2579 && HDU 1218 Blurred Vision(水~)
- 日经社説 20150828 薬局の機能を高め医療の効率化進めよ
- UVA10976 Fractions Again?!
- 【排序算法】插入排序
- C# Winform简单绘图 (在直角坐标系中画折线)
- 日经春秋 20150828
- 地理编码(根据地址得出位置并且加上自定义的大头针)
- JAVA环境变量配置备忘
- 安卓解析 json 4种格式 全解析
- 初学Oracle UNPIVOT,PIVOT,WMSYS.WM_CONCAT三个函数