Regionals 2014 >> North America - Greater NY >> 7094 - Happy Happy Prime Prime

来源:互联网 发布:整型数据 编辑:程序博客网 时间:2024/06/04 19:47

7094 - Happy Happy Prime Prime


题目:

这里写图片描述
这里写图片描述

题目思路:直接暴力,注意判重

题目链接:7094 - Happy Happy Prime Prime

以下是代码:

#include <vector>#include <map>#include <set>#include <algorithm>#include <iostream>#include <cstdio>#include <cmath>#include <cstdlib>#include <string>#include <cstring>using namespace std;int vis[100000];int prm[100000];const int MAXV = 1e5; bool isPrime[MAXV+1]; int size=0; void getPrime()  {      memset(isPrime, true, sizeof(isPrime));    int sq = sqrt((double)MAXV) + 1;     int i,j,k;      for(i = 2;i <= sq; i++)          if(isPrime[i])      for(j = 2,k = MAXV/i+1;j < k;j++)          isPrime[i*j] = false;      for( i = 2 ; i <= MAXV; i++)          if(isPrime[i])                prm[size++] = i;    isPrime[0] = isPrime[1] = false;}  int ishappy(int n){    long long sum = 0;    long long num = n;    memset(vis,0,sizeof(vis));    while(!vis[sum] && sum != 1)    {               vis[sum] = 1;        sum = 0;        while(num > 0)        {            int temp = num % 10;            sum += temp * temp;            num /= 10;        }           num = sum;    }    return sum;}int main(){    int t;    scanf("%d",&t);    getPrime();    while(t--)    {        int no,num;        scanf("%d%d",&no,&num);        printf("%d %d ",no,num);        if (isPrime[num] && (ishappy(num) == 1))        {            printf("YES\n");        }        else        {            printf("NO\n");        }    }    return 0;}
0 0