Skip to main content

codeforces-divide it solution

#include<bits/stdc++.h>
using namespace std;
void fun(long long n,int count)
{
 if(n==1)
  cout<< count<<endl;
 else if(n%2!=0 and n%3!=0 and n%5!=0)
  cout<<"-1"<<endl;
 if(n%5==0)
 {
  n=(4*n)/5;
  count++;
  fun(n,count);
 }
 else if(n%3==0)
 {
  n=(2*n)/3;
  count++;
  fun(n,count);
 }
 else if(n%2==0)
 {
  n=n/2;
  count++;
  fun(n,count);
 }
}
int main()
{
 int q;
 cin>>q;
 for(int i=1;i<=q;i++)
 {
  long long x;
  cin>>x;
  fun(x,0);
 }
 return 0;

}

Comments

Popular posts from this blog

Finding permutations of a string using recursion

#include<bits/stdc++.h> using namespace std; void print_perm(char str[],int k,int n) {     if(k==n)         cout<<str<<endl;     else     {         for(int i=k;i<n;i++)         {             swap(str[k],str[i]);             print_perm(str,k+1,n);             swap(str[k],str[i]);         }     } } int main() {     char str[20];     cout<<"Enter a string"<<endl;     cin>>str;     print_perm(str,0,strlen(str));     return 0; }

BFS of a graph

#include<bits/stdc++.h> using namespace std; class graph {     int v;     list<int> *adj; public:     graph(int v)     {         this->v=v;         adj=new list<int>[v];     }     void add_edge(int v,int w)     {         adj[v].push_back(w);     }     void bfs(int start); }; void graph:: bfs(int start) {     bool *visited=new bool[v];     for(int i=0;i<v;i++)         visited[i]=false;     visited[start]=true;     list<int> queue;     queue.push_back(start);     while(!queue.empty())     {         int s=queue.front();         cout<<s<...

Gcd using recursion

#include<iostream> #include<algorithm> using namespace std; int gcd(int m,int n) {     if(max(m,n)%min(m,n)==0)     {         return min(m,n);     }     else     {         gcd(max(m,n)%min(m,n),min(m,n));     } } int main() {     int m,n;     cin>>m>>n;     cout<<gcd(m,n);     return 0; }