Showing posts with label SPOJ Classical Problems. Show all posts
Showing posts with label SPOJ Classical Problems. Show all posts

Friday, August 19, 2016

SPOJ NSTEPS - Number Steps Starting from point (0,0) on a plane, we have written all non-negative integers 0, 1, 2,... as shown in the figure.

 
 
 

NSTEPS - Number Steps


Starting from point (0,0) on a plane, we have written all non-negative integers 0, 1, 2,... as shown in the figure. For example, 1, 2, and 3 has been written at points (1,1), (2,0), and (3, 1) respectively and this pattern has continued.

Illustration

You are to write a program that reads the coordinates of a point (x, y), and writes the number (if any) that has been written at that point. (x, y) coordinates in the input are in the range 0...10000.

Input

The first line of the input is N, the number of test cases for this problem. In each of the N following lines, there is x, and y representing the coordinates (x, y) of a point.

Output

For each point in the input, write the number written at that point or write No Number if there is none.

Example

Input:
3
4 2
6 6
3 4

Output:
6
12
No Number
 
 Solution(in python)
  
 
import  sys
T = int(input())
output_list = []
#print Twhile T>0:
    exp = sys.stdin.readline()
    exp = exp.strip("\n")
    num = exp.split(" ")
    x = int(num[0])
    y = int(num[1])
    if(x==y):
        if (x%2==0):
            output_list.append(x+y)
        else:
            output_list.append(x+y-1)
    elif(y == x-2):
        if (x % 2 == 0 and y%2==0):
            output_list.append(x+y)
        else:
            output_list.append(x+y-1)
    else:
        output_list.append('No Number')
    T-=1
for i in range(0,len(output_list)):
    print output_list[i]

SPOJ ONP - Transform the Expression:Transform the algebraic expression with brackets into RPN form (Reverse Polish Notation). Two-argument operators:

Transform the algebraic expression with brackets into RPN form (Reverse Polish Notation). Two-argument operators: +, -, *, /, ^ (priority from the lowest to the highest), brackets ( ). Operands: only letters: a,b,...,z. Assume that there is only one RPN form (no expressions like a*b*c).

Input

t [the number of expressions <= 100]
expression [length <= 400]
[other expressions]
Text grouped in [ ] does not appear in the input file.

Output

The expressions in RPN form, one per line.

Example

Input:
3
(a+(b*c))
((a+b)*(z+x))
((a+t)*((b+(a+c))^(c+d)))

Output:
abc*+
ab+zx+*
at+bac++cd+^*
 
 
Solution (in Python) 

import  sys
def infixtopostfix(exp):
    output = ""    stack = []
    op_key = {'+':0,'-':0,'*':1,'/':2,'^':3}

    for i in range(0,len(exp)):
        if(exp[i] in op_key.keys()):
            while(len(stack)>0 and stack[len(stack)-1] != '(' and op_key[exp[i]]<=stack[len(stack)-1]):
                output += stack.pop()
            stack.append(exp[i])
        elif exp[i] == '(':
            stack.append('(')
        elif exp[i] == ')':
            while(len(stack)>0 and stack[len(stack)-1]!='('):
                output += stack.pop()
            if(len(stack)>0):
                stack.pop()
        else:
            output += exp[i]

    return output

T = int(input())
output_list = []
#print Twhile T>0:


    exp = sys.stdin.readline()
    exp = exp.strip("\n")
    output_list.append(infixtopostfix(exp))
    T-=1
for i in range(0,len(output_list)):
    print output_list[i]