/**** this is the problem of finding first K and last k of N^N but i am
failling somewhere what's wrong thing am i doing
using System;
namespace MyProgram
{
    class PowerUpperDown
    {
        string zero = "000000000";
        const long Mod = 10000000000;
//calculate the a^x
        long pow(long a, long x)
        {
            if (x == 0)
                return 1;
            if (a == 0) return 0;
            long ans = pow(a, x / 2);
            ans = (ans * ans) % Mod;
            if (x % 2 == 0)
                return ans;
            else return (ans * a) % Mod;
        }
//print last k digit
        public string printL(long X, int k, long Max)
        {
            string str = X.ToString();
            string output = "";
            int C = (int)Math.Min(k, Max);
            if (X == 0)
                output = zero.Substring(0, C);
            else
            {
                if (str.Length < C)
                    output = zero.Substring(0, C - str.Length) + str;
                else
                {

                    output += str.Substring(str.Length - C, C);
                }
            }
            return output;
        }
        //first k digit
        public string printF(long X, int k, long Max)
        {
            string output = X.ToString();
            int C = (int)Math.Min(k, Max);
            return output.Substring(0, C);
        }
        public static void Main(string[] argv)
        {
            int T = Int32.Parse(Console.ReadLine());
            PowerUpperDown mypowerobj = new PowerUpperDown();
            for (int cases = 0; cases < T; cases++)
            {
                string[] input = Console.ReadLine().Split(' ');
                long N = Int64.Parse(input[0]);
                int K = Int32.Parse(input[1]);
                double fract = N * Math.Log10(N);
                long M = (long)fract;
                fract = fract - M;
                M++;
                if (N < 10)
                {
                    long val = mypowerobj.pow(N, N);
                    Console.WriteLine(mypowerobj.printF(val, K, M) + " " +
mypowerobj.printL(val, K, M));
                }
                else
                {
                    long val1 = (long)(Math.Pow(10, fract) * Mod);
                    long val2 = mypowerobj.pow(N, N);
                    Console.WriteLine(mypowerobj.printF(val1, K, M) + " " +
mypowerobj.printL(val2, K, M));
                }
            }
        }
    }
}

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to