[Ratkaistu] Snowballs - PHP Task

  

3
Aiheen aloittaja

Tony and Andi love playing in the snow and having snowball fights, but they always argue which makes the best snowballs. Because they are girls, they have decided to involve you in their fray, by making you write a program which calculates snowball data, and outputs the best snowball value.

You will receive N – an integer, the number of snowballs being made by Tony and Andi.

For each snowball you will receive 3 input lines:

  • On the first line you will get the snowballSnow – an integer.
  • On the second line you will get the snowballTime – an integer.
  • On the third line you will get the snowballQuality – an integer.

For each snowball you must calculate its snowballValue by the following formula:
(snowballSnow / snowballTime) ^ snowballQuality

At the end you must print the highest calculated snowballValue.

Input:

  • On the first input line you will receive N – the number of snowballs.
  • On the next N * 3 input lines you will be receiving data about snowballs.

Output:

  • As output you must print the highest calculated snowballValue, by the formula, specified above.
  • The output format is: {snowballSnow} : {snowballTime} = {snowballValue} ({snowballQuality})

Constraints:

  • The number of snowballs (N) will be an integer in range [0, 100].
  • The snowballSnow is an integer in range [0, 1000].
  • The snowballTime is an integer in range [1, 500].
  • The snowballQuality is an integer in range [0, 100].
  • Allowed working time / memory: 100ms / 16MB.

Hint:

For arbitrary precision mathematics PHP offers the Binary Calculator (bc_math functions) which supports numbers of any size and precision, represented as strings.

Examples:

snowballs php task

1 Answer
2

Instead of using pow() - you can use bcpow() for better precision (like described in the hint) on line #19;

My solution:

<?php
 
//  read N;
//  On the first line you will get the snowballSnow – an integer.
//  On the second line you will get the snowballTime – an integer.
//  On the third line you will get the snowballQuality – an integer.
 
$number = intval(readline());
$bestSnowballValue = 0;
$bestQuality = 0;
$bestSnowballSnow = 0;
$bestSnowballTime = 0;
 
for ($i = 0; $i < $number; $i++) {
    $snowballSnow = intval(readline());
    $snowballTime = intval(readline());
    $snowballQuality = intval(readline());
 
    $snowballValue = bcpow(($snowballSnow / $snowballTime), $snowballQuality);
 
    if ($snowballValue > $bestSnowballValue) {
        $bestSnowballValue = $snowballValue;
        $bestQuality = $snowballQuality;
        $bestSnowballSnow = $snowballSnow;
        $bestSnowballTime = $snowballTime;
    }
}
 
echo "$bestSnowballSnow : $bestSnowballTime = $bestSnowballValue ($bestQuality)";
Jaa: