Определить количество натуральных чисел, не больше N, в десятичной записи которых нет тройки - C (СИ)
Формулировка задачи:
Имя входного файла: new_game2.in
Имя выходного файла: new_game2.out
Ограничение времени: 100 мс
Ограничение памяти: 128 M
Після гри зі словами Степан вирішив придумати ще й гру з цифрами. До того ж не з усіма - а тільки з трійкою.
Задано натуральне число N. Необхідно визначити кількість натуральних чисел, не більших за N, у десятковому запису яких немає трійки.
Допоможіть Степану - напишіть програму яка вирішить його проблему.
Формат вхідних даних:
У вхідному файлі знаходиться одне натуральне число N (1 ≤ N ≤ 1018).
Формат вихідних даних:
Вихідний файл має містити одне число – відповідь на поставлену задачу.
Решение задачи: «Определить количество натуральных чисел, не больше N, в десятичной записи которых нет тройки»
textual
Листинг программы
- #include <stdio.h>
- #include <math.h>
- int hasThree(_int64 num)
- { while(num>0)
- { if(num % 10 == 3)
- return 1;
- num /= 10;
- }
- return 0;
- }
- _int64 pow9(int p)
- { _int64 res = 1;
- while(p-- > 0)
- res *= 9;
- return res;
- }
- _int64 pow10(int p)
- { _int64 res = 1;
- while(p-- > 0)
- res *= 10;
- return res;
- }
- int main()
- { unsigned _int64 N, i, count;
- int len;
- scanf("%I64u", &N);
- len = (int) log10(N*1.);
- for(i = pow10(len), count = pow9(len) - 1; i<=N; i++)
- if(!hasThree(i))
- count++;
- printf("%I64u",count);
- getchar();getchar();
- return 0;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д