Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
What's wrong?Output * Line 1: The integer with the largest prime factor. If there are more than one, output the one that appears earliest in the input file. So I think 2 19 38 this input should out like this 19 but, #include <stdio.h> #include <stdlib.h> #include <math.h> int primes[20001]; int main() { int n, a, i, j, maxfac = 0, max = 0, max2 = 0, primecnt; primes[0] = 2; primecnt = 1; for(i = 3; i < 20000; i = i + 2) { for(j = 0; j < primecnt; j++) { if(i % primes[j] == 0) { break; } } if(j == primecnt) { primes[primecnt++] = i; } } scanf("%d", &n); if (n == 1) { scanf("%d", &a); printf("%d\n", a); } else { for (j = 0; j < n; j++) { scanf("%d", &a); for (i = primecnt - 1; i >= 0; i--) { if (primes[i] <= a && a % primes[i] == 0) { maxfac = primes[i]; break; } } if (max2 <= maxfac) { max2 = maxfac; max = a; } } printf("%d\n", max); } return 0; } this code makes output 19, but it got WA, #include <iostream> #include <algorithm> using namespace std; int prime[10000],a[5001]; int main() { int i, j, m = 1, n, max, s; prime[0] = 2; for(i = 3; i < 20000; i = i + 2) { for(j = 0; j < m; j++) { if(i % prime[j] == 0) { break; } } if(j == m) { prime[m++] = i; } } cin >> n; for(i = 0; i < n; i++) { cin >> a[i]; } if(n == 1) { cout << a[0] << endl; } else { sort(a, a + n); s = max = 0; for(i = n - 1; i >= 0; i--) { for(j = m - 1; j >= 0; j--) { if(a[i] >= prime[j]) { if(a[i] % prime[j] == 0) { if(max < prime[j]) { max = prime[j]; s = a[i]; break; } } } } } cout << s << endl; } return 0; } this code makes output 38, but it got AC. Latest input is earlier appeared in input file? Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator