某天ly正在707学习,突然听到楼下yyt在大声的叫:"sgly(以下再重复三句)",聪明的ly稍加思索便意识到了这是在叫他,但是ly却很生气,并且删除了
yyt的好友。
对此xiayufengchen感到非常不解,但是他也不敢多问。随后ly说出了自己生气的原因:“他叫了四次sgly,他是在骂我傻瓜ly!!”
,听到这里,xiayufengchen明白过来了,
原来ly是个”素数迷“,痴迷于所有的素数,就连别人叫他名字的次数也一定要是素数,这样ly就会认为这是在夸他。”
?谁听到自己被骂傻瓜会开心呢?“。
想到这里,xiayufengchen也生气的删掉了yyt的好友,但是一年一度的招新时间到了,找sgly的人多了起来,xiayufengchen想要快速的判断出,别人叫sgly的次
数是不是素数,你能帮他吗?
输入格式
输入包含一个整数n表示某个人大声喊出的字数 下一行包含一个含有n个字符的字符串,表示某人大声喊出的话
输出格式
如果叫sgly的次数为素数的话,会使ly感到开心,请输出”happy“(不加双引号) 如果叫sgly的次数不是素数的话,会使ly感到生气,请输出”angry“(不加双引号)
样例
样例输入
12
sglyabcdsgly
样例输出
happy
数据范围与提示
4<=N<=1000;(保证n一定是4的倍数) 某人喊出的话不一定只有sgly,可能会是这样:”sglyabcdsgly“。
以下是我写的答案:
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
char a[1005];
int main() {
int n,count=0,flag;
scanf("%d",&n);
for(int i=0; i<n+1; i++) {
scanf("%c",&a[i]);
}
for(int i=0; i<n+1; i++) {
if(a[i]=='s'&&a[i+1]=='g'&&a[i+2]=='l'&&a[i+3]=='y') {
count++;
}
}
if(count==0||count==1) {
flag=0;
} else if(count==2) {
flag=1;
} else {
for(int i=2; i<count; i++) {
if(count%i==0) {
flag=0;
break;
} else {
flag=1;
}
}
}
if(flag==1) {
printf("happy\n");
} else if(flag==0) {
printf("angry\n");
}
return 0;
}
修改如下,供参考:
#include<stdio.h>
#include<string.h>
//#include<bits/stdc++.h>
using namespace std;
char a[1005];
int main() {
int i, n, len, count = 0, flag = 1;
scanf("%d", &n);
scanf("%s", a);
len = strlen(a);
if (len == n) {
for (i = 0; i <= n - 4; i++) { //for (int i = 0; i < n + 1; i++)
if (a[i] == 's' && a[i + 1] == 'g' && a[i + 2] == 'l' && a[i + 3] == 'y') {
count++;
i += 3;
}
}
if (count <= 1) {
flag = 0;
}
else if (count == 2) {
flag = 1;
}
else {
for (int i = 2; i < count; i++) {
if (count % i == 0) {
flag = 0;
break;
}
}
}
if (flag == 1) {
printf("happy\n");
}
else if (flag == 0) {
printf("angry\n");
}
}
else
printf("input error.\n");
return 0;
}