杭电ACM1239(搜索题)

来源:互联网 发布:丹尼格林知乎 编辑:程序博客网 时间:2024/05/20 20:02
#include <iostream>#include <vector>#include <cmath>using namespace std;vector<int> primes;int m, a, b, p, q;int main(){primes.push_back(2);for(int i = 3; i <= 10000; i ++){int max = sqrt((double)i) + 1;int counter = 0; for(int j = 2; j < max; j ++){if(i % j == 0){counter ++;break;}}if(counter == 0){primes.push_back(i);}}while(scanf("%d %d %d", &m, &a, &b)){if(m == 0 && a == 0 && b == 0){break;}double s = (double)a / b;int res = 0;for(int i = primes.size() - 1; i >= 0; i --){for(int j = i; j <= primes.size() - 1; j ++){if(primes[ i ] > m){break;}if(primes[ j ] > m || primes[ i ] * primes[ j ] > m || (double) primes[ i ] / primes[ j ] < s){continue;}else{if(primes[ i ] * primes[ j ] > res){res = primes[ i ] * primes[ j ];p = primes[ i ];q = primes[ j ];}}}}printf("%d %d\n", p, q);}return 0;}

原创粉丝点击