zoukankan      html  css  js  c++  java
  • 2013 ACM/ICPC Asia Regional Changsha Online G Goldbach

    比赛的时候,被题目误导了,题目最后说结果可能很大,要取模,那时就想直接求会TLE的!!!

    赛后才知道,坑啊…………

    代码如下:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<algorithm>
     5 #include<cstring>
     6 #define ll long long
     7 #define M 80001
     8 #define mod 1000000007
     9 using namespace std;
    10 int prime[M/3],cnt,p[M];
    11 bool f[M];
    12 void init()
    13 {
    14     cnt=0;
    15     memset(f,0,sizeof(f));
    16     for(int i=2;i<M;i++){
    17         if(!f[i]) prime[cnt++]=i;
    18         for(int j=0;j<cnt&&i*prime[j]<M;j++){
    19             f[i*prime[j]]=1;
    20             if(i%prime[j]==0) break;
    21         }
    22     }
    23     memset(p,-1,sizeof(p));
    24 }
    25 int cal(int n)
    26 {
    27     int nn=n;
    28     if(p[n]!=-1) return p[n];
    29     int m=0;
    30     for(int i=0;i<cnt&&prime[i]<=nn;i++){
    31         if(nn%prime[i]==0){
    32             m++;
    33             nn/=prime[i];
    34             while(nn%prime[i]==0){
    35                 m++;
    36                 if(m>3) return p[n]=4;
    37                 nn/=prime[i];
    38             }
    39             if(m>3) return p[n]=4;
    40         }
    41     }
    42     if(nn>1) m++;
    43     if(m>3) return p[n]=4;
    44     return p[n]=m;
    45 }
    46 int main()
    47 {
    48     int n;
    49     init();
    50     while(scanf("%d",&n)!=EOF){
    51         int ans=0;
    52         if(!f[n]||cal(n)<=3) ans++;//全是乘法
    53         for(int i=0;i<cnt&&prime[i]<=n;i++){//乘法和加法
    54             if(cal(n-prime[i])==2) ans++;
    55         }
    56         for(int i=0;i<cnt&&2*prime[i]<=n;i++)//2个数加
    57             if(f[n-prime[i]]==0) ans++;
    58         for(int i=0;i<cnt&&3*prime[i]<=n;i++){//三个数加
    59             for(int j=i;prime[i]+2*prime[j]<=n;j++)
    60                 if(f[n-prime[i]-prime[j]]==0) ans++;
    61         }
    62         printf("%d
    ",ans);
    63     }
    64     return 0;
    65 }
    View Code
  • 相关阅读:
    简单理解jQuery中$.getJSON、$.get、$.post、$.ajax用法
    适配器模式(Adapter Pattern)
    什么样的登录框才算是优秀的?
    transient的作用及序列化
    MySQL索引实现原理
    concurrentHashMap原理分析和总结(JDK1.8)
    HashMap实现原理(JDK1.8)
    深入理解Java中的IO
    多线程系列
    多线程系列
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3334646.html
Copyright © 2011-2022 走看看