#include <vector> #include <cstdio> #include <algorithm> #define wied(i,a,b) for (int i=a; i<b; i++) #define debug // using namespace std; long long n; int k; long long licznik; vector <int> p; long long dziel (long long a, int x) { //licznik++; debug ("dziel %lld %d\n", a, x); if (a>1) { long long maks=0; wied(i,x,k) if (a>=p[i]) { maks=max(maks, p[i]*dziel(a/p[i], i)); } return max((long long)1,maks); } return 1; } int main () { scanf ("%d %lld", &k, &n); p.resize(k); wied(i,0,k) scanf ("%d", &p[i]); printf ("%lld \n", dziel(n,0)); debug ("%lld\n", licznik); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <vector> #include <cstdio> #include <algorithm> #define wied(i,a,b) for (int i=a; i<b; i++) #define debug // using namespace std; long long n; int k; long long licznik; vector <int> p; long long dziel (long long a, int x) { //licznik++; debug ("dziel %lld %d\n", a, x); if (a>1) { long long maks=0; wied(i,x,k) if (a>=p[i]) { maks=max(maks, p[i]*dziel(a/p[i], i)); } return max((long long)1,maks); } return 1; } int main () { scanf ("%d %lld", &k, &n); p.resize(k); wied(i,0,k) scanf ("%d", &p[i]); printf ("%lld \n", dziel(n,0)); debug ("%lld\n", licznik); } |