1004-D专题三
来源:互联网 发布:淘宝买什么东西比较好 编辑:程序博客网 时间:2024/04/28 09:53
1.题号:1004-D
2.题意:有一个数列,它的成员都是2,3,5,7的倍数,输入一个n,求出这个数列的第n个数。
3.思路:先列一个表,把这些数据全求出来,利用循环,设a,b,c,d=1,分别对他们 *2 , *3 , *5 , *7 ,取最小值入表,并将其+1,依次类推,最后输出所求值。
4.感想:思路跟前面的题有相似之处,看第一遍的时候都没看懂啥意思。。
AC代码
#include <iostream> #include <cstdio> using namespace std; typedef long long LL; LL dp[5843]; LL min(LL a, LL b, LL c, LL d) { LL temp1 = a < b ? a : b; temp1 = temp1 < c ? temp1 : c; temp1 = temp1 < d ? temp1 : d; return temp1; } int main() { dp[1] = 1; int a = 1, b = 1, c = 1, d = 1; for (int i = 2; i <= 5842; ++i) { dp[i] = min(dp[a] * 2, dp[b] * 3, dp[c] * 5, dp[d] * 7); if (dp[i] == dp[a] * 2) a++; if (dp[i] == dp[b] * 3) b++; if (dp[i] == dp[c] * 5) c++; if (dp[i] == dp[d] * 7) d++; } int n; while (cin>>n&&n) { if (n % 100 != 11 && n % 10 == 1)printf("The %dst humble number is %lld.\n", n, dp[n]); else if (n % 100 != 12 && n % 10 == 2)printf("The %dnd humble number is %lld.\n", n, dp[n]); else if (n % 100 != 13 && n % 10 == 3)printf("The %drd humble number is %lld.\n", n, dp[n]); else printf("The %dth humble number is %lld.\n", n, dp[n]); } return 0; }
0 0
- 1004-D专题三
- 专题三 Problem D
- 1004-D专题四
- 数论专题训练D
- 专题四 Problem D
- 专题四 Problem D
- 二分贪心专题D
- 搜索专题 D
- 【背包专题】D
- 【背包专题】 D
- 2016sdau课程练习专题三 1004
- 2016sdau课程练习专题三 1004
- ArcGIS 3D的专题
- 【dp专题1】hdu1003 D
- 【字符串入门专题1】D
- 3G专题三
- LDAP专题(三)
- IPV6专题(三)
- Android学习之图片加载库Glide
- Ajax使用jQuery与后台交互
- 传感器系列之4.2气压传感器
- 题目57
- 用python实现从1加到100的三种方法: for循环,while循环,导入模块法
- 1004-D专题三
- 第一次使用 IntelliJ IDEA写一个html动作
- 数据库视频总结(一)
- 练习三 1017
- 【Android工程师】自定义控件 - ToggleView(开关状态选择器)
- CSS
- (Leetcode 99) Recover Binary Search Tree(恢复二叉排序树BST)
- Android相册支持查看本地相册,点击放大图片,滑动切换图片,手势放大缩小
- Redis的Monitor监视器