Swiggy Interview Question
SDE-3sCountry: United States
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
class Perm{
private:
vector<char> Parray;
int Count;
/*int factorial(int value){
int fact=1;
for(int i=1;i<=value;i++){
fact *= i;
}
return fact;
}*/
int findRforPos(int *p){
int max=0,tmp=0;
int r;
for(r=1;r<=Count;++r){
tmp = pow(Count,r);//factorial(Count)/factorial(Count-r);
if ((tmp+max)>=*p){
*p = *p - max;
return r;
}
max += tmp;
}
return Count;
}
public:
Perm( vector<char> array):Parray(array){
Count = Parray.size();
}
string findPos(int p){
string res;
int pos = p;
int r = findRforPos(&pos);
int sum=0;
//cout << r << endl;
while(r--){
sum=0;
for(int i=1;i<=Count;++i){
int tmp = pow(Count,r);//factorial(Count)/factorial(Count-r);
if((sum+tmp)>=pos){
pos = pos - sum;
res += Parray[i-1];
break;
}
sum+=tmp;
}
}
return res;
}
};
int main(){
vector<char> parray = {'a','b','c','d'};
int P;
cout << "Input Pos : ";
cin >> P;
Perm permobj(parray);
//for (int i =1;i<=P;i++){
cout << permobj.findPos(P) << endl;
//}
}
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
class Perm{
private:
vector<char> Parray;
int Count;
/*int factorial(int value){
int fact=1;
for(int i=1;i<=value;i++){
fact *= i;
}
return fact;
}*/
int findRforPos(int *p){
int max=0,tmp=0;
int r;
for(r=1;r<=Count;++r){
tmp = pow(Count,r);//factorial(Count)/factorial(Count-r);
if ((tmp+max)>=*p){
*p = *p - max;
return r;
}
max += tmp;
}
return Count;
}
public:
Perm( vector<char> array):Parray(array){
Count = Parray.size();
}
string findPos(int p){
string res;
int pos = p;
int r = findRforPos(&pos);
int sum=0;
//cout << r << endl;
while(r--){
sum=0;
for(int i=1;i<=Count;++i){
int tmp = pow(Count,r);//factorial(Count)/factorial(Count-r);
if((sum+tmp)>=pos){
pos = pos - sum;
res += Parray[i-1];
break;
}
sum+=tmp;
}
}
return res;
}
};
int main(){
vector<char> parray = {'a','b','c','d'};
int P;
cout << "Input Pos : ";
cin >> P;
Perm permobj(parray);
//for (int i =1;i<=P;i++){
cout << permobj.findPos(P) << endl;
//}
}
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
class Perm{
private:
vector<char> Parray;
int Count;
/*int factorial(int value){
int fact=1;
for(int i=1;i<=value;i++){
fact *= i;
}
return fact;
}*/
int findRforPos(int *p){
int max=0,tmp=0;
int r;
for(r=1;r<=Count;++r){
tmp = pow(Count,r);//factorial(Count)/factorial(Count-r);
if ((tmp+max)>=*p){
*p = *p - max;
return r;
}
max += tmp;
}
return Count;
}
public:
Perm( vector<char> array):Parray(array){
Count = Parray.size();
}
string findPos(int p){
string res;
int pos = p;
int r = findRforPos(&pos);
int sum=0;
//cout << r << endl;
while(r--){
sum=0;
for(int i=1;i<=Count;++i){
int tmp = pow(Count,r);//factorial(Count)/factorial(Count-r);
if((sum+tmp)>=pos){
pos = pos - sum;
res += Parray[i-1];
break;
}
sum+=tmp;
}
}
return res;
}
};
int main(){
vector<char> parray = {'a','b','c','d'};
int P;
cout << "Input Pos : ";
cin >> P;
Perm permobj(parray);
//for (int i =1;i<=P;i++){
cout << permobj.findPos(P) << endl;
//}
}
- NoOne June 02, 2019