My Weblog

Blog about programming and math

SPOJ In Danger

In Danger is simply based on formula[ 2 * ( n – p ) + 1 where p is highest power 2 <= n ] . You can view wiki for more details regarding this problem.

import Data.List 


readInt :: String -> Integer
readInt = read 

solve :: String -> String
solve (x:y:e:z:_) = 
   let 
	t = readInt  $ ( x : y : [] ) ++ (  take ( fromIntegral $  readInt  ( z:[] ) ) $ iterate id '0' )
	p = until ( > t ) (*2) 1
	p' = div p 2
   in show ( 2 * ( t - p' ) + 1 )


main = interact $ unlines . map solve . init . lines 
Advertisements

May 17, 2011 - Posted by | Programming

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: