BestCoder Round #64(Div.2) (3/4) (Div.1) (2/4)

maksyuki 发表于 比赛 分类,标签:
0

A Numbers

Problem Description

There is a number N.You should output "YES" if N is a multiple of 2, 3 or 5,otherwise output "NO".

Input

There are multiple test cases, no more than 1000 cases.
For each case,the line contains a integer N.(0<N<1030)

Output

For each test case,output the answer in a line.

Sample Input

2

3

5

7

Sample Output

YES

YES

YES

NO

Source

BestCoder Round #64 (div.2)

 

题目类型:高精度取模

算法分析:直接按位取模即可,也可以直接判断

 

B Sum

Problem Description

There is a number sequence A1,A2....An,you can select a interval [l,r] or not,all the numbers Ai(l≤i≤r) will become f(Ai).f(x)=(1890x+143)mod10007.After that,the sum of n numbers should be as much as possible.What is the maximum sum?

Input

There are multiple test cases.
First line of each case contains a single integer n.(1≤n≤105)
Next line contains n integers A1,A2....An.(0≤Ai≤104)
It's guaranteed that ∑n≤106.

Output

For each test case,output the answer in a line.

Sample Input

2

10000 9999

5

1 9999 1 9999 1

Sample Output

19999

22033

Source

BestCoder Round #64 (div.2)

 

题目类型:最大连续子区间的和

算法分析:可以先将每个数变化之后的值减去当前值的差计算出来,最后问题就转化成求一个连续的区间使得差值的和最大,这个问题就是简单的最大连续子区间问题

 

C Array

Problem Description

Vicky is a magician who loves math. She has great power in copying and creating.
One day she gets an array {1}。 After that, every day she copies all the numbers in the arrays she has, and puts them into the tail of the array, with a signle '0' to separat.
Vicky wants to make difference. So every number which is made today (include the 0) will be plused by one.
Vicky wonders after 100 days, what is the sum of the first M numbers.

Input

There are multiple test cases.
First line contains a single integer T, means the number of test cases.(1≤T≤2∗103)
Next T line contains, each line contains one interger M. (1≤M≤1016)

Output

For each test case,output the answer in a line.

Sample Input

3
1
3
5

Sample Output

1

4

7

Source

BestCoder Round #64 (div.2)

 

题目类型:递推预处理+前缀和

算法分析:首先将每个序列的长度、和递推出来。然后对于每个查询M,找长度小于等于M的序列并将该序列的和累加,再加上高位多出来的长度(因为高位每个数都比低位的数对应+1)。最后若多出来的长度大于1,则继续递归查询(将高位对应到低位上)