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; }