您的位置:首页 > 其它

POJ 2739

2015-06-11 11:51 246 查看
#include<iostream>
#include<stdio.h>
#include<vector>
#include<math.h>
#include<algorithm>
#define FOR for
#define M 10009
using namespace std;

vector<int> coll;
bool prim1[M];
void give_list();

int main()
{
//freopen("acm.acm","r",stdin);
give_list();
vector<int>::iterator pos;
vector<int>::iterator pos1;
int sum;
int num;
int ans;
while(cin>>num,num)
{
ans = 0;
for(pos = coll.begin(); pos != coll.end(); ++ pos)
{
sum = *pos;
if(*pos > num/2+1)
break;
for(pos1 = pos+1; pos1 != coll.end(); ++ pos1)
{
sum += *pos1;
if(sum > num)
break;
else if(sum == num)
{
++ ans;
break;
}
}
}
if(prim1[num])
cout<<++ans<<endl;
else
cout<<ans<<endl;
}
}
void give_list()
{
int i;
int j;
memset(prim1,true,sizeof(bool)*M);
prim1[1] = false;
for(i = 2; i < sqrt(long double(M))+1; i ++)
{
if(prim1[i])
{
j = 2*i;
while(j < M)
{
prim1[j] = false;
j += i;
}
}
}
for(i = 2; i < M; i ++)
{
if(prim1[i])
{
coll.push_back(i);
}
}

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