菜鸟刷题Day1

简介: 菜鸟刷题Day1

描述

自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出n(包括n)以内的自守数的个数

解题思路:

1.对[0,n]中的每一位数进行平方以后,取平方数的每一位进行判断。但是这样效率有些低,因为每一个数都要取每一位来判断。

#include <stdio.h>
#include <math.h>
int main()
{
    int n;
  while(~scanf("%d", &n)) 
  {
    long count = 0;
    for (int i = 0; i <= n; i++)
    {
            long pow_n = pow(i, 2);
            int tmp = i;
            while(tmp)
            {
                if (tmp%10 != pow_n%10) 
                    break;
                tmp/=10;
                pow_n/=10;
            } 
            if(tmp == 0)
                count++;
            }
    printf("%d\n", count);
  } 
return 0;
}

2.设一个base=10,如果i==10了,就说明i已经迈入到两位数了,此时base*=10。然后直接接用pow_n%base即可。(也就是说一位数模十,两位数就模100……)

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    int n=0;
    int count=0;
    while(cin>>n)//多组输入
    {
        int base=10;
        for(int i=0;i<=n;i++)
        {
            long pow_n=pow(i,2);
            if(i==base)
                base*=10;
            if(pow_n%base==i)
                count++;
        }
     cout<<count<<endl;   
    }
    return 0;
}

二.小于N的质数个数:返回小于 N 的质数个数_牛客题霸_牛客网 (nowcoder.com)

解题思路:

1.编写一个质数判断函数,然后对[2,n]区间内的每一个数都判断一下

2.优化,可以缩小区间,其实只要[2,sqrt(n)]区间内没有n的因数,这个数就肯定是质数

#include<stdio.h>
#include<math.h>
int isprime(int num)
{
    for(int i=0;i<=sqrt(num);i++)
    {
        if(num%i==0)
            return 0;
    }
    return 1;
}
int main()
{
    int n=0;
    int count=0;
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=2;i<n;i++)
        {
            if(isprime(i))
                count++;
        }
        printf("%d",count);
    }
    return 0;
}

三.第一个只出现一次的字符:第一个只出现一次的字符_牛客题霸_牛客网 (nowcoder.com)

描述

在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)

解题思路

这里给出一个基数排序的思想,既然是字符也就是说最多只有256个数据,建立一个容量为256的字符数组,利用字符的ASCII码值插入到数组的相应位置,然后遍历查找,找到只为1的下标。

int FirstNotRepeatingChar(char* str ) 
{
    int len=strlen(str);
    char arr[256]={0};
   for(int i=0;i<len;i++)
   {
       //要判断一下,万一是超长字符可能会溢出
       if(arr[str[i]]<256)
       {
           arr[str[i]]+=1;
       }
   }
    //数据录入完毕,查找只数组元素为1的下标
    for(int j=0;j<len;j++)
    {
        if(arr[str[j]]==1)
            return j;
    }
    return -1
}

四.判断字符是否唯一:面试题 01.01. 判定字符是否唯一 - 力扣(LeetCode)

描述

实现一个算法,确定一个字符串 s 的所有字符是否全都不同。

解题思路

这一题的思想和上一题一样,只要数组内的所有元素内容都是1,那么就说明所有的字符都是只出现一次。

class Solution 
{
public:
    bool isUnique(string astr) 
    {
    int len=strlen(astr);
        char arr[256]={'\0'};
        for(int i=0;i<len;i++)
        {
            if(arr[astr[i]]<256)
            {
                arr[astr[i]]+=1;
            }
        }
        //开始查找判断,是否有出现两次的数据
        for(int j=0;j<len;j++)
        {
            if(arr[astr[j]]>1)
                return false;
        }
        return true;
    }
};


相关文章
|
算法 Python
Python高级算法——回溯法(Backtracking)
Python高级算法——回溯法(Backtracking)
1044 2
|
.NET C# 容器
WPF自定义LED风格数字显示控件
原文:WPF自定义LED风格数字显示控件 版权声明:本文为博主原创文章,转载请注明作者和出处 https://blog.csdn.net/ZZZWWWPPP11199988899/article/details/52895167 ...
1972 0
|
9月前
|
机器学习/深度学习 数据采集 数据可视化
Python数据分析,别再死磕Excel了!
Python数据分析,别再死磕Excel了!
393 2
|
数据采集 安全 测试技术
Burpsuite Scanner被动扫描生成安全评估报告
Burpsuite Scanner被动扫描生成安全评估报告
|
前端开发 JavaScript
使用CSS中的cursor属性值,常用的可设置参数,以及其他16中参数值的使用场景和示例代码
使用CSS中的cursor属性值,常用的可设置参数,以及其他16中参数值的使用场景和示例代码
629 0
|
关系型数据库 MySQL 数据安全/隐私保护
Windows环境下安装及配置MySQL
本文主要讲解在Windows环境下MySQL的安装、配置
9030 1
Windows环境下安装及配置MySQL
|
机器学习/深度学习 算法 数据可视化
分类算法入门:以鸢尾花数据集为例(下)
分类算法入门:以鸢尾花数据集为例(下)
1334 2
|
机器学习/深度学习 计算机视觉
【保姆级教程|YOLOv8添加注意力机制】【2】在C2f结构中添加ShuffleAttention注意力机制并训练
【保姆级教程|YOLOv8添加注意力机制】【2】在C2f结构中添加ShuffleAttention注意力机制并训练
|
Linux uml iOS开发
Linux必备:这十个流程图让你变的更强!
Linux必备:这十个流程图让你变的更强!
|
人工智能 自然语言处理 监控
RPA学习第一课 --初识RPA
RPA学习第一课 --初识RPA
10405 3