在社会这个大环境下 人们逐渐的麻木不仁 唯有善良的天使 许筱宥 一直在守护内心世界
但是她却有着出其的喜好 那便是对一切能整除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; }
时间: 2024-11-06 04:01:00