小米oj 判断是否为连乘数字串
判断是否为连乘数字串
序号:#32难度:非常难时间限制:1000ms内存限制:10M
描述
给出一个字符串S,判断S是否为连乘字符串。 连乘字符串定义为: 字符串拆分成若干数字,后面的数字(从第三个数字开始)为前面2个数字的乘积。 例如: 122,可以拆成{1|2|2},有12=2 1122242,可以拆成{11|22|242},有1122=242 1224832256,可以拆成{1|2|2|4|8|32|256},有12=2,22=4,24=8,48=32,8*32=256。
若是连乘字符串,则输出true,否则输出false。(PS:不考虑乘以0)
输入
一个正整数字符串
输出
字符串true或者false,表示是否可以拆成连乘数字。
输入样例
122
113
1122242
复制样例
输出样例
true
false
true
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
typedef long long ll;
ll num(int l,int r,string s)
{
ll res=0;
int len=r-l+1;
ll tmp=1;
for(int i=r;i>=l;i--)
{
res+=(s[i]-'0')*tmp;
tmp*=10;
}
return res;
}
bool ok2(ll a,ll b,string s)
{
ll next=a*b;
string tmp=std::to_string(next);
if(s.size()<tmp.size())return false;
if(s.size()==tmp.size())
{
return s==tmp;
}
if(s.size()>tmp.size())
{
int len=tmp.size();
for(int i=0;i<len;i++)if(s[i]!=tmp[i])return false;
string sub_s="";
for(int i=len;i<s.size();i++)sub_s+=s[i];
return ok2(b,next,sub_s);
}
}
bool ok(string s)
{
int len=s.size();
bool f=0;
for(int i=0;i<len;i++)
{
for(int j=i+1;j<len;j++)
{
ll a=num(0,i,s);
ll b=num(i+1,j,s);
string sub_s="";
for(int t=j+1;t<len;t++)sub_s+=s[t];
if(ok2(a,b,sub_s)){f=1;break;}
}
if(f)break;
}
return f;
}
bool judge(string s)
{
return ok(s);
}
int main()
{
// freopen("in.txt","r",stdin);
string ss;
while(cin>>ss)
{
cout<<(judge(ss)?"true":"false")<<endl;
}
return 0;
}
小米oj 判断是否为连乘数字串的更多相关文章
- 【小米oj】找出单独的数字
题目链接:https://code.mi.com/problem/list/view?id=2&cid=0&sid=26251#codearea 描述 给出N个数字.其中仅有一个数字出 ...
- C++ 判断字符串是否全是数字
在实际的工作中,需要提取程序中的字符串信息,但是程序中经常将一些数字当做字符串来进行处理,例如表盘的刻度信息,这时候就需要判断字符串是否全为数字,来进行真正意义上的字符串提取.下面介绍了判断字符串是否 ...
- JAVA 中两种判断输入的是否是数字的方法__正则化_
JAVA 中两种判断输入的是否是数字的方法 package t0806; import java.io.*; import java.util.regex.*; public class zhengz ...
- c#判断输入textbox是否为数字
asp.net判断输入文字是否是数字 方案一:/**//// <summary> /// 名称:IsNumberic /// 功能:判断输入的是否是数字 /// 参数:string oTe ...
- Oracle中如何判断字符串是否全为数字,以及从任意字符串中提取数字
本文介绍了判断字符串是否全为数字的4种办法,另外还介绍了一个translate函数的小技巧,从任意字符串中提取数字(调用2次translate函数).这个办法是一个公司同事发现的,用起来很方便,但理解 ...
- Java 如何判断一个字符是否是数字或字母
在C++中, 可以用isdigit()判断一个字符是否是数字,可以用isalpha()判断一个字符是否是字母,还有很多,都在<cctype>头文件中 而类似的方法在JAVA中,则主要是Ch ...
- (转)java判断string变量是否是数字的六种方法小结
java判断string变量是否是数字的六种方法小结 (2012-10-17 17:00:17) 转载▼ 标签: it 分类: 转发 1.用JAVA自带的函数 public static boolea ...
- java练习-判断字符串是否都是数字
方法1: package everyDayPratise; public class IsAllNumber { public static boolean method1(String s) { i ...
- Java判断一个字符是否是数字的几种方法的代码
在工作期间,将写内容过程经常用到的一些内容段做个记录,下面内容是关于Java判断一个字符是否是数字的几种方法的内容,希望能对码农们有好处. public class Test{ public stat ...
随机推荐
- Python中几个必须知道的函数
Python中自带了几个比较有意思的函数,一般在面试或者笔试基础的时候会问到,其中3个就是map.filter.reduce函数. 1.map(function, iterable) 它第一个要传的元 ...
- 下载HTMLTestRunner 地址
通过pip安装 HTMLTestRunne失败 则需要通过手动下载. 下载地址: http://tungwaiyip.info/software/HTMLTestRunner.html 下载后,把H ...
- 【转载】Jmeter接口测试+压力测试
jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单.因为jmeter是java开发的,所以运行的时候必须先要 ...
- 论文阅读:《Bag of Tricks for Efficient Text Classification》
论文阅读:<Bag of Tricks for Efficient Text Classification> 2018-04-25 11:22:29 卓寿杰_SoulJoy 阅读数 954 ...
- Python 字符串——巧取值和列表——巧取值 对比
Python 字符串——巧取值和列表——巧取值 对比 1.字符串取值实例: samp_string = "Whatever you are, be a good one." for ...
- python+vsCode 环境搭建
先安装python环境和vscode Python下载链接:https://www.python.org/vscode下载地址:https://code.visualstudio.com/ 安装这两个 ...
- C++性能榨汁机之伪共享
C++性能榨汁机之伪共享 来源 http://irootlee.com/juicer_false_sharing/ 前言 在多核并发编程中,如果将互斥锁的争用比作“性能杀手”的话,那么伪共享则相当于 ...
- mybatis基础小结
1.JDBC是怎么访问数据库的?答:JDBC编程有6步,分别是1.加载sql驱动,2.使用DriverManager获取数据库连接,3.使用Connecttion来创建一个Statement对象 St ...
- vue覆盖UI组件样式不生效
检查检查是不是加了scoped 在vue中,我们需要引用子组件,包括ui组件(element.iview). 但是在父组件中添加scoped之后,在父组件中书写子组件的样式是无效果的. 去掉scope ...
- vue项目中引入animate.css和wow.js
本文转自:https://blog.csdn.net/liyunkun888/article/details/85003152 https://www.zhuimengzhu.com/content/ ...