USACO 3.1 Humble Numbers
来源:互联网 发布:ug8.0编程视频 编辑:程序博客网 时间:2024/06/04 17:49
#include <stdio.h>#define DEBUG 1#define TESTCASES 9#define MAX_PRIMES 100#define MAX_N 100000//注意别开小了#define INF 0xFFFFFFFFint numOfPrimes, Nth;long long primeArray[MAX_PRIMES + 1];long long humbleArray[MAX_N + 1];//humbleIndex[primeIndex]表示第primeIndex个素数乘以第humbleIndex[primeIndex]个丑数刚好比当前发现的最大丑数humbleArray[numOfHumble]大int humbleIndex[MAX_PRIMES + 1];int main(){#if DEBUGint testCase;for (testCase = 1; testCase <= TESTCASES; testCase++){char inputFileName[20] = "inputX.txt";inputFileName[5] = '1' + (testCase - 1);freopen(inputFileName, "r", stdin);printf("\n#%d\n", testCase);#endifscanf("%d%d", &numOfPrimes, &Nth);int primeIndex;for (primeIndex = 1; primeIndex <= numOfPrimes; primeIndex++){scanf("%d", &primeArray[primeIndex]);humbleIndex[primeIndex] = 0;}//每一个丑数都是由前面已经较小的丑数乘以某个素数求得,所以可以采用遍历素数再遍历丑数的方法计算,但因为丑数是有序的所以可以记录上次遍历到的丑数的位置/*for each prime pfind the minimum humble number h such that h * p is bigger than the last humble number.take the smallest h * p found: that's the next humble number.*/humbleArray[0] = 1;int n;long long minNextHumble;long long prime;int minPrimeIndex;for (n = 1; n <= Nth; n++){minNextHumble = INF;for (primeIndex = 1; primeIndex <= numOfPrimes; primeIndex++){prime = primeArray[primeIndex];while (humbleArray[ humbleIndex[primeIndex] ] * prime <= humbleArray[n - 1])humbleIndex[primeIndex]++;if (prime * humbleArray[ humbleIndex[primeIndex] ] < minNextHumble){minNextHumble = prime * humbleArray[ humbleIndex[primeIndex] ];minPrimeIndex = primeIndex;}}humbleArray[n] = minNextHumble;humbleIndex[minPrimeIndex]++;}printf("%d\n", humbleArray[Nth]);#if DEBUG}#endifreturn 0;}
0 0
- USACO 3.1 Humble Numbers (humble)
- USACO 3.1 Humble Numbers
- USACO 3.1 humble numbers
- USACO 3.1 Humble Numbers
- USACO--3.1Humble Numbers
- USACO 3.1 Humble Numbers
- usaco 3.1 Humble Numbers
- USACO 3.1.3 Humble Numbers
- USACO Section 3.1 Humble Numbers
- USACO Section 3.1 Humble Numbers
- usaco Chapter 3 section 3.1 Humble Numbers
- USACO section 3.1 Humble Numbers(DP)
- USACO 3.1.3 Humble Numbers 丑数
- usaco-3.1-Humble Numbers-<set的使用>
- USACO-Section 3.1-PROB Humble Numbers
- USACO-Section 3.1 Humble Numbers(DP)
- USACO 3.1 Humble Numbers丑数
- USACO 3.1 Humble Numbers丑数
- Java学习笔记:继承与多态
- 最全的电脑快捷
- linux上配置yum源指向本地iso文件
- 仿QQ圆头像裁剪开源项目——ClipCircleHeadLikeQQ
- tomcat学习笔记之catalina.sh
- USACO 3.1 Humble Numbers
- 打印1到最大的n位数
- linux dd命令测试硬盘读写速度
- jsp、css文件一直红线警告- javax.servlet.jsp cannot be resolved 的解决办法
- ##S3C2440串口##
- 啊啊大大
- 创建数据库与完成数据增删改查(二)
- js输出console
- NYOJ——28 大数阶乘