正规数的判定

描述

图片.png

输入描述

单个正整数:表示 n。

输出描述

  • 如果 n 是正规数,输出 Regular Number;
  • 如果不是,输出 Irregular Number;

用例输入 1 

60

用例输出 1 

Regular Number

用例输入 2 

26

用例输出 2 

Irregular Number

提示

对于 30% 的数据,1≤n≤105;
对于 100% 的数据,1≤n≤10 9。

#include<iostream>
using namespace std;
int main (){
    int n;
    cin>>n;
    while(n%2==0)
    {
        n=n/2;
    }
    while(n%3==0)
    {
        n=n/3;
    }
    while(n%5==0)
    {
        n=n/5;
    }
    if(n==1)
    {
        cout<<"Regular Number";
    }
    else
    {
        cout<<"Irregular Number";
    }
    return 0;
}

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
算符优先分析可以用于判定符号串是否为正规表达式。具体实现步骤如下: 1. 定义运算符的优先级,一般情况下,运算符的优先级从高到低依次为:括号、连接符、或运算符。 2. 将符号串转换成字符流。 3. 创建两个栈,一个用于存储符号,一个用于存储运算符。 4. 从左到右扫描字符流,对于每个字符: - 如果是操作,将其压入符号栈中。 - 如果是运算符: - 如果运算符栈为空,将其压入运算符栈中。 - 如果运算符栈不为空,比较该运算符与栈顶运算符的优先级。 - 如果该运算符优先级高于栈顶运算符,则将其压入运算符栈中。 - 如果该运算符优先级低于或等于栈顶运算符,则从符号栈中弹出两个操作,从运算符栈中弹出一个运算符,将这三个元素合并成一个新的操作,并将其压入符号栈中。重复比较该运算符与新的栈顶运算符的优先级,直到该运算符可以入栈为止。 5. 当扫描完整个字符流后,如果运算符栈不为空,则从符号栈中弹出两个操作,从运算符栈中弹出一个运算符,将这三个元素合并成一个新的操作,并将其压入符号栈中。 6. 最终,符号栈中只剩下一个元素,如果该元素为正规表达式,则符号串为正规表达式,否则不是。 需要注意的是,算符优先分析实现的判定方法只能判断符号串是否为正规表达式,不能判断正规表达式是否合法。如果要判断正规表达式是否合法,需要使用其他方法,如正则文法的推导和自动机理论等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值