Этот вопрос закрыт для ответов, так как повторяет вопрос Почему программа на C не обрабатывает числа больше 1999999996?
@Anvario0

Почему программа на C не выводит результат?

Я написал программу на C, которая перебирает степени десятки и должна найти наименьшее такое число, которое делится без остатка на 19, но программа молчит. В чём проблема? Я уверен, что такое число есть, при n=17, но всё же хотелось бы понять, почему программа не работает.
#include <stdio.h>
#include <math.h>

int main() {
	int n = 0;
	while (1) {
		long long int i = (2 * pow(10, n) - 4);
		if (i % 19 == 0)
		{
			printf("--------%d--------", n);
			break;
		}
		printf("%d", n);
		printf("\t %lld\n", i);
		n++;
	}
}
  • Вопрос задан
  • 108 просмотров
Ответы на вопрос 2
@res2001
Developer, ex-admin
Не используйте pow. Она работает с double, а это числа с плавающей точкой. У double точность примерно до 15 значащих десятичных цифр, дальше все приближенно. https://en.wikipedia.org/wiki/IEEE_754#Basic_and_i...
У вас целочисленная арифметика везде - просто домножайте каждую итерацию на 10. И не забывайте везде использовать long long.
Вам же уже давали пример в одном из прошлых вопросов.
И n там вроде - 18.
Ответ написан
@galaxy
Сколько еще вопросов нужно задать по этой ерундовой задаче?
int main() {
  unsigned long long n = 10;
  int i = 1;
  while (1) {
    if ((2 * n - 4) % 19 == 0)
    {
      printf("--------%d--------", i);
      break;
    }
    printf("%lld", n);
    printf("\t %d\n", i);
    i++;
    n *= 10ull;
  }
}
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы