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
  • 相关阅读:
    如何修炼成某一领域的高手?
    宝宝为什么见生人就哭
    绩效管理
    《管理3.0》读书笔记
    卡特尔16PF性格测试与答案
    管理3.0
    偶感
    Javascript事件总结
    HTML5中与页面显示相关的API
    毕业了五年了--- 人生感想
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3334646.html
Copyright © 2011-2022 走看看