InputThere is an
N in the first line. Than
N lines follow with the values of the function for the arguments 1, 2, …,
N respectively.
}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4pOutputA pair of integers, which are abscissas of the desired points, should be written into one line of output. The first number must be less then the second one. If it is any ambiguity your program should write the pair with the smallest first number.
}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4pSample
| input | output |
3}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p 2}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p 6}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p 4}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
| 1 2}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
|
Problem Source: Third Open USTU Collegiate Programming Contest (PhysTech Cup), March 18, 2000 答案如下:
}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p1 using System;}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
2 }GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
3 namespace Skyiv.Ben.Timus}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
4 {}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
5 // http://acm.timus.ru/problem.aspx?space=1&num=1010}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
6 sealed class T1010}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
7 {}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
8 static void Main()}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
9 {}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
10 int i0 = 0, n = int.Parse(Console.ReadLine());}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
11 long r0 = 0, v1 = int.Parse(Console.ReadLine());}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
12 for (int i = 0; i < n - 1; i++)}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
13 {}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
14 long v2 = int.Parse(Console.ReadLine());}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
15 long r = Math.Abs(v1 - v2);}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
16 v1 = v2;}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
17 if (r0 < r)}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
18 {}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
19 r0 = r;}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
20 i0 = i;}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
21 }}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
22 }}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
23 Console.WriteLine("{0} {1}", i0 + 1, i0 + 2);}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
24 }}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
25 }}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p
26 }}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p这题实际上是很简单的,只要意识到所求倾角最大的连线的两个端点必定是相邻的点就容易了。
}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p两点连线的倾角的正切值(tan)等于这两点的纵坐标之差除以横坐标之差。由于这两点是相邻的点,所以横坐标之差为 1,也就是说,直接等于纵坐标之差。
}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p题目中说的:“Each value of the function is longint (signed long in C++).”,即:该离散函数的值域是 C++ 中的 signed long 数据类型,实际上相当于 C# 中的 int ( 即: System.Int32 ) 数据类型,取值范围是 -2,147,483,648 到 +2,147,483,647。所以可以用 int.Parse() 方法来读取输入。但是进行计算时必须使用 C# 的 long ( 即: System.Int64 ) 数据类型,相当于 C++ 中的 signed long long 数据类型,取值范围是 -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807,不然计算时就有可能溢出。
}GéQaOï3(www.netcsharp.cnÀÀ¬$ ¨µ4p