算法题集——001

1、An easy problem

题目详情:

对于给定的n,m∈N,求正整数c满足:

(1)∀x,y ∈N, ∃ε0>0(ε0 ∈ R),s.t |n*x+m*y-c|>ε0.

(2)∀d ∈N 且 d>c,∃x'∈N,y'∈N,s.t ∀ε>0 ,均有|n*x'+m*y'-d|<ε.

其中 gcd(n,m)=1 , 以上整数均在long long 范围内.

输入为多组测试案例

每个测试样例占一行,包括n m

每个测试占一行,输出c,(如果不存在c输出“impossible.”)


答题说明:

输入样例:

2 3

5 9

输出样例:

1

31


解:

不会。。。


2、-3+1

题目详情:

有一个数列,所有的数都是非负整数,你可以进行如下方式进行一次操作(注意一次完整的操作必须先后完成如下两个步骤):

(1) 任选一个不小于3的数,把它减少3。

(2) 任选一个数把它增加1。

请问,最多能够操作多少次?

输入格式:

多组数据,每组数据第一行是一个正整数n,表示数列中数的个数。(1<=n<=20000)

第二行包含n个空格分隔的非负整数,每个整数不超过1000000。

输出格式:

对每组数据输出一行,表示最多可以进行的操作次数。



答题说明:

输入样例

2

10 11

输出样例:

10



解:

import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


import javax.script.ScriptException;


public class MainTest {


public static void main(String[] args) throws MalformedURLException, IOException, ScriptException {

Scanner scan = new Scanner(System.in);
System.out.println("input the size of numlist: ");
int size = scan.nextInt();
List<Integer> list = new ArrayList<Integer>(size);
System.out.println("input the numlist: ");
for(int i=0;i<size;i++){
list.add(scan.nextInt());
}
int count = 0;
int sum = 0;
for(int i=0;i<size;i++){
count += list.get(i)/3;
sum += list.get(i);
}
if(count > 0){
while((sum - 2*count - 1)/3 != 0){
count++;
}
if((sum - 2*count - 1)%3 == 2){
count++;
}
}
System.out.println("count = "+count);
}

不知道对不对。。。

你可能感兴趣的:(算法题集——001)