2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 Goldbach

B Goldbach

猜想……验证猜想,

所以就大胆猜想吧。我猜从x/2开始可以很快就找到那两个素数,感谢学长的Java真找到了,尤其是判素数,还挺快。

Description:

Goldbach’s conjecture is one of the oldest and best-known unsolved problems in number theory and all of mathematics. It states:

Every even integer greater than 2 can be expressed as the sum of two primes.

The actual verification of the Goldbach conjecture shows that even numbers below at least 1e14 can be expressed as a sum of two prime numbers.

Many times, there are more than one way to represent even numbers as two prime numbers.

For example, 18=5+13=7+11, 64=3+61=5+59=11+53=17+47=23+41, etc.

Now this problem is asking you to divide a postive even integer n (2

Input:

The first line of input is a T means the number of the cases.

Next T lines, each line is a postive even integer n (2

Output:

The output is also T lines, each line is two number we asked for.

T is about 100.

本题答案不唯一,符合要求的答案均正确

样例输入

1
8

样例输出

3 5

//Problem B
import java.math.BigInteger;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner Cin = new Scanner(System.in);
        int t = Cin.nextInt();
        for(int ca = 0;ca <= t;ca ++){

            long x = Cin.nextLong();
            if(x == 4){
                System.out.println("2 2");
                continue;
            }
            long y = x / 2;
            if(y % 2 == 0)  y ++;
            while(y > 0){
                long z = x - y;
                if(BigInteger.valueOf(y).isProbablePrime(100) && BigInteger.valueOf(z).isProbablePrime(100)){
                    System.out.println(y + " " +z);
                    break;
                }
                y -= 2;
            }
        }
    }
}
以下是3道小题
//Prolem E
#include 

using namespace std;
const long long M = 1000000007;
const long long MAXL = 1000000;
typedef long long int lli;

int main() {
    int n;
    while (cin >> n) {
        lli ans = 1;
        for(int i = 0;i < n;i ++){
            int tmp;
            scanf("%d",&tmp);
            ans = ans * (tmp + 1) % M;
        }
        printf("%lld\n",ans);
    }
    return 0;
}
//Problem I 很神奇,y-x总是能够被9整除。
import java.math.BigInteger;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner Cin = new Scanner(System.in);
        while (Cin.hasNext()) {
            BigInteger x = Cin.nextBigInteger();
            char[] y = x.toString().toCharArray();
            for (int i = 0; i < y.length - i - 1; i++) {
                char tmp = y[i];
                y[i] = y[y.length - i - 1];
                y[y.length - i - 1] = tmp;
            }
            String z = new String(y);
            BigInteger p = new BigInteger(z);
            char[] q = p.subtract(x).divide(BigInteger.valueOf(9)).abs().toString().toCharArray();
            boolean flag = true;
            for(int i = 1;i < q.length;i ++){
                if(q[i] != q[i - 1]){
                    flag = false;
                }
            }
            if(flag)    System.out.println("YES");
            else        System.out.println("NO");
        }
    }
}
//Problem L,异或函数fx的最大值等于最大元素的值
#include 

using namespace std;
int T,a[10001],s,mx,n;


int main() {
    scanf("%d",&T);
    while (T--) {
        s=mx=0;
        scanf("%d",&n);
        for (int i=0;iscanf("%d",&a[i]);
            s=max(s,a[i]);

        }
        printf("%d\n",s);
    }
    return 0;
}

你可能感兴趣的:(水题)