【每日刷题】Day84
🥕个人主页:开敲🍉
🔥所属专栏:每日刷题🍍
🌼文章目录🌼
1. 字符串最后一个单词的长度_牛客题霸_牛客网 (nowcoder.com)
2. 自守数_牛客题霸_牛客网 (nowcoder.com)
3. 返回小于 N 的质数个数_牛客题霸_牛客网 (nowcoder.com)
1. 字符串最后一个单词的长度_牛客题霸_牛客网 (nowcoder.com)
//思路:迭代器遍历记数。遍历字符串,用一个栈不断更新存储遇到的" "的后一个位置,用字符串长度-栈中元素即为字符串最后一个单词长度
#include <iostream>
using namespace std;
#include <string>
int main()
{
string s;
getline(cin,s);
int stack[1] = {0};
int count = 0;
//迭代器
string::iterator it = s.begin();
//遍历
while(it!=s.end())
{
//遇到" "将" "的后一个位置记录进栈
if(*it==' ')
stack[0] = count+1;
count++;
it++;
}
printf("%d",s.size()-stack[0]);
return 0;
}
2. 自守数_牛客题霸_牛客网 (nowcoder.com)
//思路:取模运算。
#include <stdio.h>
#include <math.h>
int main()
{
int ans = 1;
int n = 0;
scanf("%d",&n);
for(int i = 1;i<=n;i++)
{
int flag = 1;
int num = 0;
int tmp = i;
//需要的位数
while(tmp)
{
tmp/=10;
num++;
}
int ii = i;
int ret = pow(i,2);
//平方后拿取末尾的num个数
while(num)
{
if(ii%10!=ret%10)
{
flag = 0;
break;
}
ii/=10;
ret/=10;
num--;
}
if(flag)
ans++;
}
printf("%d",ans);
return 0;
}
3. 返回小于 N 的质数个数_牛客题霸_牛客网 (nowcoder.com)
//思路:埃氏筛算法。
//埃氏筛算法大致就是:从2开始(0和1不是质数),将2的倍数去除,这样2就是最小的质数。随后继续向后遍历,遍历到下一个质数也就是3,将3的倍数去除。每一次遍历到质数就记数+1。
#include <stdio.h>
#include <stdbool.h>
int main()
{
int ans = 0;
int n = 0;
scanf("%d",&n);
bool isprime[n];
//首先将数组2~n全都置为true,假设2~n全为质数
for(int i = 2;i<n;i++)
{
isprime[i] = true;
}
for(int i = 2;i<n;i++)
{
//从2开始,遍历到质数则将当前质数的所有倍数置为false,置为false的位置则不是质数
if(isprime[i])
{
for(int j = 2*i;j<n;j+=i)
{
isprime[j] = false;
}
}
//遍历到质数则记数+1
if(isprime[i])
ans++;
}
printf("%d",ans);
return 0;
}