Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём неправильно. Необходимо обновить браузер или попробовать использовать другой.
Можно сделать какой нибудь счетчик, который будет зависеть от числа К, к примеру , еси k<10, то ясно что числа однозначные, если k<90*2+9 и больше 9, то двухзначные, если k>90*2+9 и k<900*3+90*2+9*1, то трехзначные, и т.д. Примерно такой алгоритм мне кажется логичным..... Ну а вообще, решение, которое предложил rrrFer - самое простое, и мне кажется, что твоему преподу и такое покатит
2 Fam :
char* - строка //Размер ее лучше выбрать как (k+1)+ strlen(itoa(k))
memset - заполнение памяти
strlen - длина строки
strcat - слияние строки
itoa - перевод из целочисленного в строку
k+1 - индекс - т.к. индекс наверное от 1..., а в с массив от 0...
Чет оптимизация этого алгоритма меня заинтерисовала..
Пока добился вот такого, но использую строку - хоть и один раз, следовательно можно оптимизировать еще...
Завтра трезвым взглядом нужно будет взглянуть
C++:
int k;
cin >>k;
int pos =0;
int Mn = 1;
int Mns =0;
int size = 1;
for (int i = 1; i<=k; i++)
{
pos+=size;
if (pos>=k && k<=pos+size)
{
char buffer[8] ={0};
itoa(i,buffer,10);
cout<<"Result: "<<buffer[k-pos+size-1];
break;
}
if (i == 9*Mn+Mns)
{
Mns = 9*Mn;
Mn*=10;
size++;
}
}
Реально видно спать хочу ;-)
Вот наверное оптимизированный, хотя можно еще подумать наверное ;-)
C++:
int k;
cin >>k;
int pos =0;
int Mn = 1;
int Mns =0;
int size = 1;
for (int i = 1; i<=k; i++)
{
pos+=size;
if (pos>=k && k<=pos+size)
{
int Res = i;
for (int i= pos-k, iter =10; i>1; i--)
{
Res = (int) Res/iter;
}
cout<<"Result = "<<Res%10;
break;
}
if (i == 9*Mn+Mns)
{
Mns = 9*Mn;
Mn*=10;
size++;
}
}
Код как всегда на высшем уровне ;-))) Ничего лишнего и все минимизированно
рФер, я на работе прошлый код просматривал, в нем ошибка(недочет, какую то операцию выходную пропустил) какая то была, не помню уже точно, хотел пока смотрел сразу отписать, но отвлекли... Щас нужно код опять просматривать заново ;-))) А твои кода я только с ручкой и листиком просматриваю ;-)) Без пометок тяжеловато иной раз бывает ;-)) Особенно ты циклы описываешь когда ;-)
#include <iostream.h>
int main( void )
{
int c, d, k, j, n, z;
cout << "Enter k: "; cin >> k;
c = n = 0;
do {
n++;
for ( d = 1, j = n; j /= 10; d++ );
c += d;
} while ( c < k );
for ( z = c - k; z--; n /= 10 );
cout << "Result: " << n % 10 << endl;
return 0;
}
#include <iostream.h>
int main( void )
{
int c, k, j, n;
cin >> k;
c = n = 0;
do {
for ( n++, c++, j = n; j /= 10; c++ );
} while ( c < k );
for ( c -= k; c--; n /= 10 );
cout << "Result: " << n % 10 << endl;
cin.get();
return 0;
}
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь. Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.