【每日刷题】Day26
🥕个人主页:开敲🍉
🔥所属专栏:每日刷题🍍
🌼文章目录🌼
1. [NOIP2008]笨小猴_牛客题霸_牛客网 (nowcoder.com)
2. 添加逗号_牛客题霸_牛客网 (nowcoder.com)
3. 简写单词_牛客题霸_牛客网 (nowcoder.com)
1. [NOIP2008]笨小猴_牛客题霸_牛客网 (nowcoder.com)
//思路:创建哈希表记录每个字母单词中每个字母出现的次数,算出出现次数最多max的以及出现次数最少的min,判断max-min是否为质数。
#include <stdio.h>
int main()
{
int hash[123] = {0};
char s[100] = {0};
scanf("%s",s);
int i = 0;
int max = 0;
int min = 100;
while(s[i]>='a'&&s[i]<='z')//记录每个字母的出现次数
{
hash[s[i]]+=1;
i++;
}
for(int j = 97;j<123;j++)
{
if(hash[j]>max)//找到最大值
{
max = hash[j];
}
if(hash[j]!=0&&hash[j]<min)//找到最小值
{
min = hash[j];
}
}
if(max-min==1||max==min)//判断为1以及max==min的情况
{
printf("No Answer\n");
printf("%d",0);
return 0;
}
int flag = 1;
for(int j = 2;j<(max-min);j++)//判断是否为质数
{
if((max-min)/j==0)//不是质数flag置为0
{
flag = 0;
}
}
if(flag)//flag为1 说明是质数
{
printf("Lucky Word\n");
printf("%d",max-min);
return 0;
}
printf("No Answer\n");
printf("%d",0);
return 0;
}
2. 添加逗号_牛客题霸_牛客网 (nowcoder.com)
//思路:暴力解法。使用字符数组存放n的每一位,从个位开始,每三位数加一个' , '。需要注意的是,如果n为三位数,不需要加' , ',如果n为6位数,只需要加一个' , '。因此这里需要判断一下n的位数
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d",&n);
char s[20] = {0};
int i = 0;
int flag = 0;
int num = 0;
int m = n;
int x = 0;
while(m)
{
x++;
if(x==4||x==7||x==10)//分别为加一个' , '、两个' , '、三个' , '的临界情况
{
num++;//num为' , '个数
}
m/=10;
}
while(n)
{
s[i++] = n%10+'0';
flag++;
if(flag==3&&num)//每三位加一个' , ',前提是num不能为0(也就是有' , '可加)
{
s[i++] = ',';
num--;
flag = 0;
}
n/=10;
}
i--;
int count = 0;
char ans[20] = {0};
for(int j = i;j>=0;j--)//由于s存放是从n的个位开始存,因此这里需要倒转一下
{
ans[count++] = s[j];
}
printf("%s",ans);
}
3. 简写单词_牛客题霸_牛客网 (nowcoder.com)
//思路:需要改为大写存储的单词实际上就是复合词第一个单词的第一个字母以及' '后面第一个单词的第一个字母,因此在遍历复合词时,只需要将这些字母大写并存储即可。
#include <stdio.h>
int main()
{
char s[5000] = {0};
gets(s);
int i = 0;
char ans[100] = {0};
int j = 0;
while(s[i]>='A'&&s[i]<='z'||s[i]==' ')
{
if(i==0)//复合词第一个单词第一个字母
{
if(s[0]>='a')
{
s[0]-=32;
}
ans[j++] = s[0];
}
if(s[i]==' ')//遇到空格存储后面遇到的第一个字母
{
i++;
if(s[i]>='a')
{
s[i]-= 32;
}
ans[j++] = s[i];
}
i++;
}
printf("%s",ans);
}