LJZ的ACM协会后援团
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 0 Accepted Submission(s): 0
Problem Description
ljz是acm协会的会长,众所周知,只有最帅的人才能当会长,ljz在进入协会的第一天就被学长看中,经过交易后不负众望成为了会长。长得帅自然会有人喜欢,所以ljz身边总是围绕着一大堆学弟,这让他很困扰,他要从其中挑出一个成为自己的心腹?现在有有n个学弟,每个学弟身上都有一个值Ai,若Ai能分解成一个素数和一个合数(都大于0)的和,则能为该学弟增加一点魅力值,不同的方案都会提供一点魅力值。例如一个学弟的Ai为11,那么11=2+9、11=3+8、11=5+6、11=7+4,那么他的魅力值为4。现在要求出这n个学弟的魅力值。
Input
第一行先给出总人数n<=100.第2行至n+1行每一行都有一个值2<=
Ai
<=1000。会输入多个n
Output
输出总共为n行,每一行输出
Ai
对应的魅力值。
Sample Input
3 5 8 11
Sample Output
0 1 4
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
int prime[100000];
bool vis[100000];
int len=0;
int init()
{
memset(vis,0,sizeof(vis));
for(int i=2;i<2000;i++)
{
if(!vis[i]) prime[len++]=i;
for(int j=0;j<len&&i*prime[j]<2000;j++)
{
vis[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
}
int main()
{
init();
int n;
int pp;
while (~scanf("%d",&pp))
{
while (pp--)
{
scanf("%d",&n);
int ans=0;
for (int i=0;i<len&&n>prime[i];i++)
if ( vis[n-prime[i]])
ans++;
printf("%d\n",ans);
}
}
return 0;
}