Codeforces Round #549 div2 1143-B Nirvana 题解
Kurt reaches nirvana when he finds the product of all the digits of some positive integer. Greater value of the product makes the nirvana deeper.
Help Kurt find the maximum possible product of digits among all integers from 1 to n.Input
The only input line contains the integer n (1≤n≤2⋅109).Output
Print the maximum product of digits among all integers from 1 to n.Examples
input:
390
output:
216
input:
7
output:
7
input:
1000000000
output:
387420489
一开始看到这道题的时候还是有点伤脑筋的,一直没想出来,想了十多分钟后想到办法后AC
代码使用字符串模拟数字求得结果,getvalue()函数是求得结果,calc()函数是递归函数,用于求得最大值
这个采用的递归搜索,设定结果函数为calc(),字符串长度为n,则calc返回以下其中一个最大解:
- getvalue( {s[0], s[1], ..., s[n-1]} )
- getvalue( {s[0]-1, 9, ..., 9} ) //连续n-1个9
- getvalue( {9, 9, ..., 9} ) //连续n-1个9
- s[0] * calc( {s[1], s[2], ..., s[n-1]} )
代码如下:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
#include<cmath>
#include<cstring>
#include<cstdlib>
using namespace std;
typedef long long ll;
ll getvalue(string s) {
ll sum = 1;
for (int i = 0; i < s.size(); i++) {
sum *= s[i] - '0';
}
return sum;
}
ll calc(string s) {
string q1 = s;
q1[0]--;
for (int i = 1; i < q1.size(); i++)q1[i] = '9';
return max({
getvalue(s),
getvalue(q1),
getvalue(q1.substr(1)),
(s.size() > 1) ? ((ll)(s[0] - '0')*calc(s.substr(1))) : 0
});
}
int main() {
string s;
cin >> s;
cout << calc(s) << endl;
}
Codeforces Round #549 div2 1143-B Nirvana 题解的更多相关文章
- [题解] Codeforces Round #549 (Div. 2) B. Nirvana
Codeforces Round #549 (Div. 2) B. Nirvana [题目描述] B. Nirvana time limit per test1 second memory limit ...
- Codeforces Round #549 (Div. 2)B. Nirvana
B. Nirvana time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
- codeforces round 472(DIV2)D Riverside Curio题解(思维题)
题目传送门:http://codeforces.com/contest/957/problem/D 题意大致是这样的:有一个水池,每天都有一个水位(一个整数).每天都会在这一天的水位上划线(如果这个水 ...
- Codeforces Round #549 (Div. 1)
今天试图用typora写题解 真开心 参考 你会发现有很多都是参考的..zblzbl Codeforces Round #549 (Div. 1) 最近脑子不行啦 需要cf来缓解一下 A. The B ...
- Codeforces Round #539 div2
Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...
- Educational Codeforces Round 63 (Rated for Div. 2) 题解
Educational Codeforces Round 63 (Rated for Div. 2)题解 题目链接 A. Reverse a Substring 给出一个字符串,现在可以对这个字符串进 ...
- 【前行】◇第3站◇ Codeforces Round #512 Div2
[第3站]Codeforces Round #512 Div2 第三题莫名卡半天……一堆细节没处理,改一个发现还有一个……然后就炸了,罚了一啪啦时间 Rating又掉了……但是没什么,比上一次好多了: ...
- Codeforces Round#320 Div2 解题报告
Codeforces Round#320 Div2 先做个标题党,骗骗访问量,结束后再来写咯. codeforces 579A Raising Bacteria codeforces 579B Fin ...
- Educational Codeforces Round 65 (Rated for Div. 2)题解
Educational Codeforces Round 65 (Rated for Div. 2)题解 题目链接 A. Telephone Number 水题,代码如下: Code #include ...
随机推荐
- UTF-8, Unicode, GB2312格式串转换之C语言版
原住址:http://www.cnitblog.com/wujian-IT/archive/2007/12/13/37671.html /* author: wu.j ...
- Unencapsulate SVM root mirror (ZT)
http://www.seedsofgenius.net/solaris/quick-reference-unencapsulate-svm-root-mirror Often times admin ...
- 部署和调优 2.2 squid反向代理
配置反向代理 打开配置文件 vim /etc/squid/squid.conf 修改 http_port 改为 http_port 80 accel vhost vport 在它下面添加一段 cach ...
- Git实用技巧
1.关于版本控制系统 (1)本地版本控制系统 (2)集中化的版本控制系统 (3)分布式版本控制系统 2.Git的三种状态 对于任何一个文件,在 Git 内都只有三种状态: 已提交(committed) ...
- fluent仿真数值错误
- 关于fragment生命周期的两张图片
图1,fragment的生命周期,图2,fragment生命周期对应activity的生命周期
- No bean class specified on bean definition 解决方案
调试Spring项目出现No bean class specified on bean definition异常 但是控制台并没有给出其他相关信息了 这个时候可以在AbstractBeanDefini ...
- Swing绘图API
----------------siwuxie095 工程名:TestSwingPaintAPI 包名:com.siwuxie095.swing ...
- C++实现筛选法
筛选法 介绍: 筛选法又称筛法,是求不超过自然数N(N>1)的所有质数的一种方法.据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274-194年)发明的,又称埃拉托斯特尼筛子. ...
- loj10241 取石子游戏1
传送门 分析 我们发现如果在某个人取完之后还剩k+1个石子,则这个人必胜.所以我们可以将n个石子转化为n-k-1个,然后不断递归的转化下去.最后我们可以得到对于n个石子的胜负只与谁先取到n%(k+1) ...