jatinp510 Ответов: 1

Как взять 10^100 нет. На вход.



[^

в этом и заключается проблема от hackerearth.com

как мы можем взять 10^100 в качестве входных данных в c и c++?

Что я уже пробовал:

long long int но его диапазон не так уж и велик

CHill60

Двойной?

jatinp510

не работать

Dave Kreskowiak

Вы хотите определить "не работает", потому что это не описание проблемы. Это жалоба.

Что вы видите, какие ошибки вы получаете, какие неожиданные значения в переменных, которые вы используете,...?

Мы также не можем видеть ваш код, и это большая часть решения проблемы.

jatinp510

я думаю, что double не может хранить значение 10^100.

у двойников нет такого большого диапазона.

jeron1

Я предполагаю, что вам придется использовать пользовательский большой целочисленный класс, например GitHub - sercantutar/infint: целочисленная арифметика произвольной точности[^], вы могли бы погуглить bigint, чтобы посмотреть, что еще может существовать,

jatinp510

кто-нибудь посоветуйте мне это сделать
создайте массив символов.
как это делается.
и почему это должно быть сделано.

Richard MacCutchan

Весь смысл hackerearth заключается в том, что вы используете свои знания и опыт, и особенно свой мозг, чтобы решить проблемы.

jatinp510

оооо... разве это преступление-спрашивать "почему" по любому вопросу

Richard MacCutchan

Нет, но от вас ожидается, что вы сделаете большую часть работы. На этих форумах вы обращаетесь за помощью, когда ваш код не делает того, что вы ожидаете.

jatinp510

сэр, я пробовал на своем уровне.
если бы кто-то дал мне совет.
я просто хочу знать, как и почему создание массива символов поможет.

мне просто нужны объяснения.
у вас есть опытные люди, и вы можете поделиться своими знаниями с этим нубом.

Richard MacCutchan

Забудьте об этой проблеме и забудьте hackerearth. Возьмите себе хорошее учебное пособие или книгу по С++ и проработайте ее несколько раз, чтобы вы полностью поняли основные принципы компьютерных структур данных и то, как ими манипулировать. Пытаться изучать программирование на основе проблем, которые вы действительно не понимаете, и задавать вопросы здесь, не будет работать.

jatinp510

тнку, сэр.... :)
твои слова помогают мне :)

#включить <stdio.h>
#include<string.h>

тап_п()
{


инт Т,Лен,у;
scanf("%d",&t);
while(t--)
{
char a[101];
scanf("%s",&a);
len=strlen(a);
u=a[len-1];

если(u%2==0)
printf("YES\n");
еще
printf("NO\n");
}
возвращает 0;
}

Richard MacCutchan

Смотрите мой комментарий выше.

Dave Kreskowiak

Если вы задаете этот вопрос, то что Вы делаете на HackerEarth? Этот сайт предоставляет кучу сложных проблем для решения, когда вам нужно применить свой опыт для их решения.

Этот вопрос говорит о том, что у вас нет большого опыта работы с C/C++ или разбиения проблем на простые части.

HackerEarth-это не сайт, который научит вас писать код.

jatinp510

су.. как практиковать кодирование.

Dave Kreskowiak

Честно говоря, книги.

1 Ответов

Рейтинг:
10

CPallini

Внимательно прочитайте требования. Они попросили вас установить, может ли число быть точно разделено на два (четно). Вы знаете, вы должны проверить только последнюю цифру. Следовательно, вам даже не нужен массив: считайте и отбрасывайте все, кроме последней цифры, а затем проверяйте последнюю цифру на четность или нечетность.


jatinp510

#включить <stdio.h>
#include<string.h>

тап_п()
{


инт Т,Лен,у;
scanf("%d",&t);
while(t--)
{
char a[101];
scanf("%s",&a);
len=strlen(a);
u=a[len-1];

если(u%2==0)
printf("YES\n");
еще
printf("NO\n");
}
возвращает 0;
}

сэр,я уже пробовал это.
это правильный метод.

CPallini

Это одно из возможных решений.

jatinp510

можете ли вы предложить мне другие решения?
что еще я могу попробовать?