Monthly Archives: September 2010

SGU 118 解题报告

http://acm.sgu.ru/problem.php?contest=0&problem=118

118. Digital Root

time limit per test: 0.50 sec.
memory limit per test: 4096 KB

Let f(n) be a sum of digits for positive integer n. If f(n) is one-digit number then it is a digital root for n and otherwise digital root of n is equal to digital root of f(n). For example, digital root of 987 is 6. Your task is to find digital root for expression A1*A2*…*AN + A1*A2*…*AN-1 + … + A1*A2 + A1.

设 f(n) 表示十进制正整数 n 的各位数字之和。如果 f(n) 是一个1位数那么他就是 n 的数根。否则的话 f(n) 的数根就是 n 的数根。举例说明:987的数根是 6(9+8+7=24 2+4=6)。你的任务是算出这样的数的数根: A1*A2*…*AN + A1*A2*…*AN-1 + … + A1*A2 + A1。

Input

Input file consists of few test cases. There is K (1 <=K <= 5) in the first line of input. Each test case is a line. Positive integer number N is written on the first place of test case (N<=1000). After it there are N positive integer numbers (sequence A). Each of this numbers is non-negative and not more than 109.

输入包含K个测试点.在第一行会给出 K (1 <= K <= 5).每个测试点一行.首先是一个正整数N (N <= 1000). 接着N个非负整数 (序列 A). 均不超过109.

Output

Write one line for every test case. On each line write digital root for given expression.

每个测试点一行,输出给定数的数根.

Read more »

SGU 133 解题报告

http://acm.sgu.ru/problem.php?contest=0&problem=133

133. Border

time limit per test: 0.50 sec.
memory limit per test: 4096 KB

Along the border between states A and B there are N defence outposts. For every outpost k, the interval [Ak,Bk] which is guarded by it is known. Because of financial reasons, the president of country A decided that some of the outposts should be abandoned.In fact, all the redundant outposts will be abandoned. An outpost i is redundant if there exists some outpost j such that Aj < Ai and Bi < Bj. Your task is to find the number of redundant outposts.

在 A 和 B 的边界出有 N 个前哨站.对于每一个前哨站 k,他的管辖范围 [Ak,Bk] 是已知的.由于经济原因,A 国总统决定减少一些前哨站.多余的前哨站都会被抛弃.我们定义 i 号前哨站是多余的如果存在另一个前哨战 j 满足 Aj < Ai 且 Bi < Bj.你的任务是计算多余的前哨站个数.

Input

The first line of the input will contain the integer number N (1 <=N <= 16 000). N lines will follow, each of them containing 2 integers:Ak and Bk (0 <= Ak < Bk <= 2 000 000 000), separated by blanks. All the numbers Ak will be different. All the numbers Bk will be different.

第一行是整数N (1 <=N <= 16 000).接下来N行每行包含2个整数: Ak 和 Bk (0 <= Ak < Bk <= 2 000 000 000),空格隔开.所有的 Ak 都是不同的,所有的 Bk 也是不同的.

Output

You should print the number of redundant outposts.

输出多余的前哨站个数.

Read more »

SGU 130 解题报告

http://acm.sgu.ru/problem.php?contest=0&problem=130

130. Circle

time limit per test: 0.50 sec.
memory limit per test: 4096 KB

On a circle border there are 2k different points A1, A2, ..., A2k, located contiguously. These points connect k chords so that each of points A1, A2, ..., A2k is the end point of one chord. Chords divide the circle into parts. You have to find N - the number of different ways to connect the points so that the circle is broken into minimal possible amount of parts P.

在圆上有 2k 个不重合的点 A1, A2, ..., A2k, 通过这些点可以作k条弦,使得每个点都恰好属于一条弦。这样我们就把这个圆分成了很多区域,你要求出 N 个方案数,使这些弦将圆划分的区域数量最小。

Input

The first line contains the integer k (1 <= k <= 30).

输入 K.

Output

The first line should contain two numbers N and P delimited by space.

输出方案数量和最少的区域数量,用空格隔开。

Read more »

SGU 108 解题报告

http://acm.sgu.ru/problem.php?contest=0&problem=108

108. Self-numbers 2

time limit per test: 2.50 sec.
memory limit per test: 4096 KB

In 1949 the Indian mathematician D.R. Kaprekar discovered a class of numbers called self-numbers. For any positive integer n, define d(n) to be n plus the sum of the digits of n. (The d stands for digitadition, a term coined by Kaprekar.) For example, d(75) = 75 + 7 + 5 = 87. Given any positive integer n as a starting point, you can construct the infinite increasing sequence of integers n, d(n), d(d(n)), d(d(d(n))), .... For example, if you start with 33, the next number is 33 + 3 + 3 = 39, the next is 39 + 3 + 9 = 51, the next is 51 + 5 + 1 = 57, and so you generate the sequence 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ... The number n is called a generator of d(n). In the sequence above, 33 is a generator of 39, 39 is a generator of 51, 51 is a generator of 57, and so on. Some numbers have more than one generator: for example, 101 has two generators, 91 and 100. A number with no generators is a self-number. Let the a[i] will be i-th self-number. There are thirteen self-numbers a[1]..a[13] less than 100: 1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, and 97. (the first self-number is a[1]=1, the second is a[2] = 3, :, the thirteen is a[13]=97);

1949年,印度数学家D.R. Kaprekar 发现了一类数,称为自我数.对于任何一个正整数 n ,定义 d(n) 的值为 n 与 n的每一位数字之和.(d 叫做digitadition, 这个单词是Kaprekar创造的.) 例如,d(75) = 75 + 7 + 5 = 87. 给你任意正整数 n 作为起点,您可以构建无限增加的整数 n 序列,n, d(n), d(d(n)), d(d(d(n))),.... 例如,起点是33,则下一个数是 33 + 3 + 3 = 39,再下一个数是 39 + 3 + 9 = 51,然后是 51 + 5 + 1 = 57,这样由 33 生成的数列是 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141,... 这样我们称正整数 n 是 d(n)生成器.在刚才的序列中, 33 是 39 的生成器, 39 是 51 的生成器, 51 是 57 的生成器,等等.有些数有不止一个生成器,例如, 101 有两个生成器, 91 和 100.如果一个数没有生成器我们就称它为自我数.用 a[i] 表示第 i 个自我数.小于 100 有 13 个自我数:1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97.(第一个自我数是 a[1] = 1,第二个是 a[2] = 3,:,第十三个是 a[13] = 97);

Input

Input contains integer numbers N, K, s1...sk. (1<=N<=107, 1<=K<=5000) delimited by spaces and line breaks.

输入数据包含整数 N, K, s1...sk. (1<=N<=107, 1<=K<=5000) 用空格或回车隔开。

Output

At first line you must output one number - the quantity of self-numbers in interval [1..N]. Second line must contain K numbers - a[s1]..a[sk], delimited by spaces. It`s a gaurantee, that all self-numbers a[s1]..a[sk] are in interval [1..N]. (for example if N = 100, sk can be 1..13 and cannot be 14, because 14-th self-number a[14] = 108, 108 > 100)

第一行输出 [1..N]范围内自我数的数量.第二行包含 K 个数 - a[s1]..a[sk], 用空格隔开.必须满足所有自我数 a[s1]..a[sk] 是在[1..N]范围内.(例如,如果 N =100,sk可以是 1..13 但不能是 14,因为 第 14 个自我数 a[14] = 108 , 108 > 100 )

Read more »

SGU 117 解题报告

http://acm.sgu.ru/problem.php?contest=0&problem=117

117. Counting

time limit per test: 0.50 sec.
memory limit per test: 4096 KB

Find amount of numbers for given sequence of integer numbers such that after raising them to the M-th power they will be divided by K.

给出一系列数,统计出其中 M 次幂能被 K 整除的个数.

Input

Input consists of two lines. There are three integer numbers N, M, K (0

输入包含两行.第一行有三个整数 N, M, K (0

Output

Write answer for given task.

输出结果.

Read more »

SGU 101 解题报告

http://acm.sgu.ru/problem.php?contest=0&problem=101

101. Domino

time limit per test: 0.50 sec.
memory limit per test: 4096 KB

Dominoes – game played with small, rectangular blocks of wood or other material, each identified by a number of dots, or pips, on its face. The blocks usually are called bones, dominoes, or pieces and sometimes men,stones, or even cards.
The face of each piece is divided, by a line or ridge, into two squares, each of which is marked as would be a pair of dice...

The principle in nearly all modern dominoes games is to match one end of a piece to another that is identically or reciprocally numbered.

ENCYCLOPÆDIA BRITANNICA

多米诺 – 一种使用木头或其他材料制作的方块进行的游戏。方块的每个面上标记上确定的数字或点。方块常常被称做骨,骨牌或片,有时使用人,骨头或卡片进行.

每个骨牌的面使用一条线分成两部分,每个部分标记一个数字.

几乎所有现代骨牌游戏的原则是:骨牌数字相同的部分首位相接,最后连成串.

–––––– 《大英百科全书》

Given a set of domino pieces where each side is marked with two digits from 0 to 6. Your task is to arrange pieces in a line such way, that they touch through equal marked sides. It is possible to rotate pieces changing left and right side.

给定一系列两端标记为0~6数字的骨牌.你的任务是排列这些骨牌,使他们相接触的部分数字相同,你可以左右翻转骨牌.

Input

The first line of the input contains a single integer N (1 ≤ N ≤ 100) representing the total number of pieces in the domino set. The following N lines describe pieces. Each piece is represented on a separate line in a form of two digits from 0 to 6 separated by a space.

第一行输入一个整数 N (1 ≤ N ≤ 100) 代表骨牌的数量. 接下来 N 行代表 N 块骨牌. 每块骨牌使用两个0~6的使用空格隔开的数字表示.

Output

Write “No solution” if it is impossible to arrange them described way. If it is possible, write any of way. Pieces must be written in left-to-right order. Every of N lines must contains number of current domino piece and sign “+” or “-“ (first means that you not rotate that piece, and second if you rotate it).

如果无法将骨牌连成串,则输出"No solution". 否则输出任何一种符合条件的排列方案.输出是从左到右描述骨牌的排列.每行包含一个数字和一个符号,分别表示骨牌的编号和是否翻转骨牌,(+表示不翻转,-表示翻转)。

Read more »

SGU 126 解题报告

http://acm.sgu.ru/problem.php?contest=0&problem=126

126. Boxes

time limit per test: 0.50 sec.
memory limit per test: 4096 KB

There are two boxes. There are A balls in the first box, and B balls in the second box (0 < A + B < 2147483648). It is possible to move balls from one box to another. From one box into another one should move as many balls as the other box already contains. You have to determine, whether it is possible to move all balls into one box.

现在有两个盒子。第一个盒子有A个球,另一个盒子有B个球 (0 < A + B < 2147483648).有一种移动球的方式.从一个盒子移动球到另一个盒子,但要求被移动的球的数量要与另一个盒子已有的球的数量相同.你必须算出是否有可能将其中一个盒子清空。

Input

The first line contains two integers A and B, delimited by space.

第一行包含两个整数 A 和 B,以空格隔开.

Output

First line should contain the number N - the number of moves which are required to move all balls into one box, or -1 if it is impossible.

第一行输出整数 N -如果可以清空其中一个盒子所需要的移动次数,如果不可能,则输出-1.

Read more »