Problem:
Score : 200 points

Problem Statement

You are given nonnegative integers a and b (a ≤ b), and a positive integer x.
Among the integers between a and b, inclusive, how many are divisible by x?

Constraints

0 ≤ a ≤ b ≤ 10^{18}

1 ≤ x ≤ 10^{18}

Input

The input is given from Standard Input in the following format:

a b x

Output

Print the number of the integers between a and b, inclusive, that are divisible by x.

Sample Input 1

4 8 2

Sample Output 1

3

There are three integers between 4 and 8, inclusive, that are divisible by 2: 4, 6 and 8.

Sample Input 2

0 5 1

Sample Output 2

6

There are six integers between 0 and 5, inclusive, that are divisible by 1: 0, 1, 2, 3, 4 and 5.

Sample Input 3

9 9 2

Sample Output 3

0

There are no integer between 9 and 9, inclusive, that is divisible by 2.

Sample Input 4

1 1000000000000000000 3

Sample Output 4

333333333333333333

Watch out for integer overflows.

Solution in C# (Mono 4.6.2.0) (judge verdict: Wrong Answer)

using System;

public class Test
{
	public static void Main()
	{
		string line;//標準入力からの読み込み用
		int arrayLength = 0; //arrayの長さを決める変数
		long[] array =new long[arrayLength];
		int a = 0;	//arrayの位置を変えるための変数
		int cnt = 0;
		//標準入力からの読み込み。forループで全ての行を読み込む
		
        for(;(line = Console.ReadLine())!=null;){	
				line = line.Trim();
				string[] buffer = line.Split(' ');	//各文字を処理するために一度bufferに格納
				
				foreach (string s in buffer)//bufferにある文字の分だけループする
				{
				++arrayLength; 
				Array.Resize(ref array, arrayLength); //arrayの長さを変更する。必要な分だけ増やす
					
				
				long num;
				num = long.Parse(s); //int型に変換
				
				array[a] = num;
				++a;　//配列の次の位置へと動かす
				
				
				}       
		
		long i1 = (array[0])/array[2];
		if(array[0]%2==0){
			i1 = i1 -1;
		}
		long i2 = array[1]/array[2];
		long ans = i2-i1;
		Console.WriteLine(ans);		
		}

	}
}