code i have understand for last 6 hours:
problem statement was little bit clumsy but understood atlast:
#include<bits/stdc++.h>
using namespace std;
int gcd(int n1,int n2){
if(n2!=0)
return gcd(n2,n1%n2);
else
return n1;
}
int main()
{
int t,i,n,temp,commonfactor,sum,ans;
cin>>t;
while(t--)
{
sum=0;
int n;
cin>>n;
printf("Main temp %d\n",n);
for(i=2; i<n; i++)
{
int temp=n;
ans=0;
while(temp>0)
{
ans=ans+temp%i;
temp=temp/i;
printf("i=%d temp=%d ",i,temp);
cout<<"ans="<<ans<<endl;
}
sum=sum+ans;
cout<<"\nSum="<<sum<<endl;
}
//cout<<"Sum="<<sum<<endl;
commonfactor=gcd(sum,n-2);
cout<<"Common factor :"<<commonfactor<<" ";
cout<<"N-2 :"<<n-2;
ans=(n-2)/commonfactor;
printf("\n%d\n",ans);
}
return 0;
}
accepted code took help from editorial:
#include<bits/stdc++.h>
using namespace std;
int gcd(int n1,int n2){
if(n2!=0)
return gcd(n2,n1%n2);
else
return n1;
}
int main()
{
int t,i,n,temp,commonfactor,sum,ans;
cin>>t;
while(t--)
{
sum=0;
int n;
cin>>n;
//printf("Main temp %d\n",n);
for(i=2; i<n; i++)
{
int temp=n;
ans=0;
while(temp>0)
{
ans=ans+temp%i;
temp=temp/i;
// printf("i=%d temp=%d ",i,temp);
//cout<<"ans="<<ans<<endl;
}
sum=sum+ans;
// cout<<"\nSum="<<sum<<endl;
}
//cout<<"Sum="<<sum<<endl;
commonfactor=gcd(sum,n-2);
// cout<<"Common factor :"<<commonfactor<<" ";
// cout<<"N-2 :"<<n-2;
ans=(n-2)/commonfactor;
printf("%d\n",ans);
}
return 0;
}
official editorial:
#include<stdio.h>
int gcd(int n1, int n2)
{
if (n2 != 0)
return gcd(n2, n1%n2);
else
return n1;
}
int main(){
int t,i,n,temp,c,sum,common_factor,ans;
scanf("%d",&t); // Take input from user
while(t--){ // loop it for t test-cases
sum = 0; // Sum variable as average = sum/(n-2)
scanf("%d",&n); // Take n as input
for(i=2;i<=n-1;i++){ // loop for changing the number n to all the bases from 2 to (n-1)
temp = n; // storing at temporary variable
c=0; // to find the sum of all the numbers formed on conversions and there sum so c = 0
while(temp > 0){
c+=temp%i;
temp=temp/i;
}
sum+=c; // Adding sum of each conversion to the total
}
common_factor = gcd(sum,n-2); // Common factor in sum and n-2 to find the irreducible form of average
ans = (n-2)/common_factor; // denominator of average
printf("%d\n",ans);
}
return 0;
}