[Offer收割]编程练习赛12 register

Ended

Participants:1323

Verdict:Accepted
Score:100 / 100
Submitted:2017-04-02 12:09:52

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<cstdio>
#include<algorithm>
#include<cstring>
#define ms(a,b) memset(a,b,sizeof(a))
using namespace std;
const int maxn=1e6;
int p[maxn];
bool f[maxn+10];
void init() {
    ms(f,0),p[0]=0;
    for(int i=2;i<=maxn;i++) {
        if(!f[i])p[++p[0]]=i;
        for(int j=1;j<=p[0] && p[j]<=maxn/i;j++) {
            f[i*p[j]]=1;
            if(i%p[j]==0)break;
        }
    }
}
int main() {
    init();
    
    int n;
    while(~scanf("%d",&n)) {
        for(int i=1;i<=p[0];i++) {
            if(!f[n-p[i]]) {
                printf("%d %d\n",p[i],n-p[i]);
                break;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX