Nirvana【思维+暴力优化】
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 11 to nn.
Input
The only input line contains the integer nn (1≤n≤2⋅1091≤n≤2⋅109).
Output
Print the maximum product of digits among all integers from 11 to nn.
Examples
Input
390
Output
216
Input
7
Output
7
Input
1000000000
Output
387420489
Note
In the first example the maximum product is achieved for 389389 (the product of digits is 3⋅8⋅9=2163⋅8⋅9=216).
In the second example the maximum product is achieved for 77 (the product of digits is 77).
In the third example the maximum product is achieved for 999999999999999999 (the product of digits is 99=38742048999=387420489).
题意:
给出一个小于2e9的正整数n 要求找到从1~n 中的一个数 满足它的每位数相乘结果最大 并输出该结果
思路:
开始肯定是想直接暴力 从1~n 但明显会超时
对于每个输入的数n 例如:390
先考虑把他-1 变成389 然后再-1 变成388 、387 仔细想想根本不需要减那么多次 因为389 各位相乘肯定大于 388
同理4099 先-100 变成3999 再-100变成3899 也没必要 所以总结规律如下:
从数n的最后一位开始 通过向前一位借1的方法 每次都把最后一位变成9 (最大值对应的数肯定会出现在这些情况里面)
例如:
390 --> 389 --> 299 --> 99
(99可以不考虑,因为前面的299 肯定大于 199)
最后把每一种情况对应的值都计算出来 取最大的
AC代码:
#include<stdio.h>
typedef long long LL;
LL sum(LL n)
{
LL num=n,count2=0;
char a[15];
while(num){
LL num1=num%10;
num/=10;
a[count2++]=num1+'0';
}
LL sum2=1;
for(int i=count2-1;i>=0;i--){
sum2=sum2*(a[i]-'0');
}
return sum2;
}
int main()
{
LL c[15]={0,1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000,10000000000};
LL n;
scanf("%lld",&n);
LL maxx=sum(n),j=1;
while(n>=0){
while((n/c[j])%10!=9&&n>=0){
n-=c[j];
}
LL num2=sum(n);
if(num2>maxx){
maxx=num2;
}
j++;
}
printf("%lld\n",maxx);
return 0;
}
Nirvana【思维+暴力优化】的更多相关文章
- SEO思维的优化源于生活
[回顾]无论哪个行业的,.学习技巧和操作非常简单,它主要是一个时间的问题?回到seo行业,操作和技能是非常easy学习,和seo入门是互联网行业最easy行业,不像有些人理解的代码,敲代码等,它必须基 ...
- [TJOI2017]城市 【树的直径+暴力+优化】
Online Judge:Luogu P3761 Label:树的直径,暴力 题目描述 从加里敦大学城市规划专业毕业的小明来到了一个地区城市规划局工作.这个地区一共有n座城市,n-1条高速公路,保证了 ...
- 牛客寒假基础集训营 | Day1 E-rin和快速迭代(暴力 + 优化)
E-rin和快速迭代 题目描述 rin最近喜欢上了数论. 然而数论实在太复杂了,她只能研究一些简单的问题. 这天,她在研究正整数因子个数的时候,想到了一个"快速迭代"算法.设 f( ...
- tokitsukaze and RPG(暴力优化)
链接:https://ac.nowcoder.com/acm/contest/308/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- Nikita and string [思维-暴力] ACM
codeforces Nikita and string time limit per test 2 seconds memory limit per test 256 megabytes O ...
- (暴力+优化)学渣的逆袭 -- zzuli -- 1785
http://acm.zzuli.edu.cn/problem.php?id=1785 学渣的逆袭 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 82 ...
- codeforce 429D. Tricky Function (思维暴力过)
题目描述 Iahub and Sorin are the best competitive programmers in their town. However, they can't both qu ...
- ZOJ - 3983 - Crusaders Quest(思维 + 暴力)
题意: 给出一个字符串,长度为9,包含三种各三个字母"a","g","o",如果一次消除连续三个一样的分数+1,消完自动向左补齐 其中可以消 ...
- codeforces 768 C. Jon Snow and his Favourite Number(思维+暴力)
题目链接:http://codeforces.com/contest/768/problem/C 题意:给出n个数,k个操作,和一个x,每次操作先排序然后对奇数位数进行xor x操作,最后问k次操作后 ...
随机推荐
- STM32 Keil 软件仿真设置
设置 Dialog.DLL 分别为:DARMSTM.DLL和TARMSTM.DLL, Parameter 均为:-pSTM32F103RC,用于设置支持芯片的软硬件仿真
- js时间格式转换,传入时间戳,第二哥参数是格式,也可不传
export function parseTime(time, pattern) { if (arguments.length === 0 || !time) { return null } cons ...
- [ES6系列-07]Generator Function: 生成器函数
[原创]码路工人 Coder-Power 大家好,这里是码路工人有力量,我是码路工人,你们是力量. github-pages 博客园cnblogs Generator function 生成器函数是E ...
- 技术大佬:我去,这个容易被忽略的小程序Image图片属性,竟然这么屌!
前段时间在做“高清壁纸推荐”小程序优化的时候,发现一个很实用的图片属性——能够实现最大化压缩图片大小.且图片质量最小的损失,在此之前一直没有注意.今天跟大家分享一下这个属性的用法,主要是让大家能够,意 ...
- [Objective-C] 020_ Block
1.定义和使用Block #import "ViewController.h" @interface ViewController () @end @implementation ...
- Java实现 LeetCode 332 重新安排行程
332. 重新安排行程 给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序.所有这些机票都属于一个从JFK(肯尼迪国际机场 ...
- Java实现 蓝桥杯VIP 算法训练 回文数
import java.util.Scanner; public class 回文数 { static int time = 0; public static int change(String st ...
- Java实现蓝桥杯VIP算法训练 奇变的字符串
试题 算法训练 奇变的字符串 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 将一个字符串的奇数位(首位为第0位)取出,将其顺序弄反,再放回原字符串的原位置上. 如字符串" ...
- Java实现 LeetCode 63 不同路径 II(二)
63. 不同路径 II 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在 ...
- Linux帮助命令man详解
命令man详解 命令man,可以获得命令(使用whatis命令可以得到一个命令的简短介绍,可以使用:命令 --help 来获得命令的选项说明)或配置文件的帮助信息(可以使用apropos命令仅查看配置 ...