Язык c++ дано два натуральных числа a, b; a∈n; b∈n. на отрезке от a до b требуется найти натуральное число с максимальным произведением его цифр. каким образом это можно сделать наиболее оптимально.

zizizineb99 zizizineb99    3   05.10.2019 11:40    0

Ответы
Mixail1510 Mixail1510  11.08.2020 13:02

#include <iostream>

using namespace std;

int main() {

   string a,b;

   int m,k=0;

   cout<<"a = "; cin>>a;  

   cout<<"b = "; cin>>b;

   int ind=b.length();

   if (a.length()==b.length())

       while ((a[k]==b[k]) && (k<b.length()-1)) k++;

   for (int i=k; i<b.length()-1; i++) {

      if (b[i]==48) break;

      m=b[i+1]-48;

      if (i<b.length()-2) m--;

      if ((b[i]-48)*m < max((b[i]-49),1)*9) {

         if ((b[i]-49==0) && (i>0)) continue;                              

         ind=i+1; b[i]--; break;

      }  

   }                            

   for (int i=ind; i<b.length(); i++) b[i]='9';

   if (b[0]=='0') b.erase(0,1);

   cout<<b<<endl;

   system("pause");      

   return 0;

}

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика