码迷,mamicode.com
首页 > 其他好文 > 详细

为以后出题做准备 NO.1

时间:2016-08-20 16:05:20      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

在社会这个大环境下  人们逐渐的麻木不仁   唯有善良的天使  许筱宥  一直在守护内心世界  

但是她却有着出其的喜好  那便是对一切能整除4的数感兴趣   同时她还认为素数是最美丽的数字

所以问题来了  给你一个字符串   试问这里面有多少个能整除4   即子串中有多少个是4的倍数

因为许姑娘非常喜欢素数便想让素数尽可能的多  她就自定义 1和0 都是素数

Input

  第一行是数字T(0<T<1000)  表示下面有T组实例

  接下的T行    每行一个长度为N(0<N<100000)的字符串

Output

  输出有多少个4的倍数   占一行    

  输出这个数字是否为素数  如果是就输出“Yes”,不是就输出“No” 占一行

Sample Input

   5

   1

   12

   123

   1234

   44444

Sample Output 

  0
  Yes

  1
  Yes

  1
  Yes

  2
  Yes 

  15
  No

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<math.h>
using namespace std;
#define INF 0x3f3f3f3f
#define LL long long
#define N 100009
int k=0;
int a[N],q[N];
char str[N];
void qq()
{
    for(int i=2;i<N;i++)
    {
        if(!a[i])
        {
            q[k++]=i;
            for(int j=i+i;j<N;j+=i)
                a[j]=1;
        }
    }
    return ;
}
int main()
{
    int T;
    scanf("%d",&T);
    qq();
    while(T--)
    {
        scanf("%s",str);
        int len=strlen(str);
        LL s=0;
        if(str[0]==4)
            s++;
        for(int i=1;i<len;i++)
        {
            if(str[i]==‘4‘||str[i]==‘8‘)
                s++;
            if(((str[i-1]-0)*10+str[i]-0)%4==0)
                s+=i;
        }
        printf("%lld\n",s);
        int m=(int)sqrt(s);
        int w=0;
        for(int i=0;q[i]<=m;i++)
        {
            if(s%q[i]==0)
            {
                w=1;
                printf("No\n");
                break;
            }
        }
        if(w==0)
            printf("Yes\n");
    }
    return 0;
}

 

为以后出题做准备 NO.1

标签:

原文地址:http://www.cnblogs.com/a719525932/p/5790456.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!