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

Ответы 1

  • #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;

    }

  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years