您的位置:首页 > 其它

Sum of Consecutive Prime Numbers--POJ 2739

2010-08-17 20:15 330 查看
1、题目类型:数论、打表。

2、解题思路:水题。

3、注意事项:优化dp[i][j]>10000,否则TLE。

4、实现方法:

#include<iostream>
#include<map>
using namespace std;

bool prime[10000];
int cnt,d[10000],dp[1300][1300];
map<int,int> M;

void Table()
{
int i,j;
prime[1]=1;
prime[2]=prime[3]=0;
for(i=2;i<100;i++)
{
for(j=2;j*i<10000;j++)
{
prime[j*i]=true;
}
}
}

void Set()
{
cnt=1;
for(int i=1;i<10000;i++)
{
if(!prime[i])
d[cnt++]=i;
}
}

void Solve()
{
int i,j;

for(i=1;i<cnt;i++)
{
for(j=i;j<cnt;j++)
{
dp[i][j]=dp[i][j-1]+d[j];
if(dp[i][j]>10000)
break;
M[dp[i][j]]++;
}
}
}

int main()
{
Table();
Set();
Solve();
int n;
while(cin>>n&&n)
cout<<M
<<endl;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: