#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); } |
English