0
点赞
收藏
分享

微信扫一扫

CodeForces 1143 B. Nirvana

南陵王梁枫 2022-10-18 阅读 55

​​题目​​

解决思路是,每个位上都是9的情况,遍历一下就可以了。

#include <iostream>

using namespace std;

int n;
int a[35];
int main()
{
scanf("%d",&n);

int tag=0;
while(n)
{
a[tag]=n%10;
n=n/10;
tag++;
}

int x=1;
for(int i=0;i<tag;i++)
{
x =x*a[i];
}

for(int i=0;i<tag-1;i++)
{
if(a[i]!=9)
{
a[i]=9;
int pos=i+1;
a[pos]--;
while(pos<tag&&a[pos]==-1)
{
a[pos]=9;
pos++;
a[pos]--;
}
}
int y=1;
for(int j=0;j<tag;j++)
{
if(a[j]==0) continue;
y=y*a[j];
}

x = max(x,y);
}
printf("%d\n",x);

}



举报

相关推荐

0 条评论