Sort by

recency

|

169 Discussions

|

  • + 0 comments

    Kristen's fascination with numbers is fascinating! Her method of comparing them based on the sum of their digits adds an intriguing twist. 11xplay

  • + 2 comments

    **Python 3: **

    def best_divisor(n):
        sums = []
        divisors = []
        for i in range(1, n + 1):
            if n % i == 0:
                divisors.append(i)
                sums.append(sum_digits(i))
    
        # index = sums.index(max(sums))
        # print(divisors[index])
        return divisors[sums.index(max(sums))]
    
    def sum_digits(n):
        sum = 0
        for d in str(n):
            sum += int(d)
    
        return sum
    
  • + 0 comments

    My code in C++. O(sqrt(n)).

    int digsum(int x){
        int ret = 0;
        while(x){
            ret += (x % 10);
            x /= 10;
        }
        return ret;
    }
    
    void solve(){
        int n; cin >> n;
        pair<int,int> ans(0,0);
        for(int i=1; i*i<=n; i++){
            if(n % i == 0){
                int d1 = i, d2 = n / d1;
                pair<int, int> p1(digsum(d1), -d1);
                pair<int, int> p2(digsum(d2), -d2);
                ans = max(ans, p1);
                ans = max(ans, p2);
            }
        }
        cout << -ans.second << '\n';
    }
    
  • + 0 comments

    golang solution

    func bestDivisor(n int32) {
        
        largestBestDivisor := int32(-1)
        largestBestDivisorDigitSum := int32(-1)
        
        for i := int32(1); i <= n; i++ {
            if n%i == 0 {
                iDigitSum := digitSum(i)
                
                if largestBestDivisor == -1 || iDigitSum > largestBestDivisorDigitSum {
                    largestBestDivisor = i
                    largestBestDivisorDigitSum = iDigitSum
                }
            }
        }
        
        fmt.Print(largestBestDivisor)
    }
    
    
    func digitSum(n int32) int32 {
        result := int32(0)
        
        for n > 0 {
            result += n%10
            n /= 10
        }
        
        return result
    }
    
  • + 0 comments

    python

        divs=[]
        sums=[]
        for i in range(n, 0, -1):
            if n % i == 0:
                divs.append(i)
                summ = 0
                while (i != 0):
                    summ += i % 10
                    i = math.floor(i/10)
                sums.append(summ)
        maxi = divs[0]
        sumi = sums[0]
        for i in range(1, len(divs)):
            if sums[i] > sumi:
                maxi = divs[i]
                sumi = sums[i]
            elif sums[i] == sumi and divs[i] < maxi:
                maxi = divs[i]
                sumi = sums[i]
        print(maxi)