Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Solve using your language of choice

Name: Anonymous 2011-04-13 9:05

http://i56.tinypic.com/9qlh52.png

my solution in Java

import java.io.*;
import java.util.*;

public class ProblemF {
   
    public static void main(String[] args) throws Exception {
        BufferedReader fileIn = new BufferedReader(new FileReader("f.in"));
       
        String line = null;
        while ((line = fileIn.readLine()) != null) {
            int number = Integer.parseInt(line);
            if (number <= 0 || number >= 100000000) {
                break;
            }
            System.out.println(number +" : "+ getOrderedPairs(number));
        }
    }
   
    public static String getOrderedPairs(int number) {
        StringBuffer buff = new StringBuffer();
       
        int pairCount = 0;
        for (int i = 1; i <= number; i++) {
            for (int j = i; j <= number; j++) {
                int sum = getSummation(i, j);
                if (sum == number) {
                    pairCount++;
                    buff.append(" ("+ i +","+ j +")");
                    break;
                } else if (sum > number) {
                    break;
                }
            }
        }
       
        buff.insert(0, pairCount +" :");
       
        return buff.toString();
    }
   
    public static int getSummation(int tempA, int tempB) {
        int a = tempA - 1;
        int b = tempB;
        int sumB = ((b * (b + 1)) / 2);
        int sumA = ((a * (a + 1)) / 2);
        return sumB - sumA;
    }
   
}

Name: Anonymous 2011-04-13 20:23


open System

let orderedPairs x = List.rev [ for b = x downto 1 do
                                    for a = b downto 1 do
                                        if (List.sum [a..b]) = x then yield (a, b) ]
let numbers =
    let rec getNumbers x =
        if (0 < x) && (x < 100000000) then x :: getNumbers(int(Console.ReadLine()))
        else []
    getNumbers(int(Console.ReadLine()))

let rec orderedPairsString orderedPairsX =
    match orderedPairsX with
    | (a, b) :: t -> "(" + string(a) + ", " + string(b) + ") " +  orderedPairsString(t)
    | [] -> ""

numbers
|> List.map (fun x -> (x, orderedPairs x))
|> List.map (fun (x, orderedPairsX) -> (x, List.length orderedPairsX, orderedPairsX))
|> List.map (fun (x, orderedPairsXLength, orderedPairsX) ->
                Console.WriteLine("{0} : {1} : {2}",
                                    x, orderedPairsXLength, orderedPairsString orderedPairsX))
|> ignore

ignore(Console.ReadKey())

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List