GeliaSecret2005
08.01.2021 19:54

Треугольники Для формирования изображения в компьютерной графике используются простейшие поверхности в виде треугольника. В зависимости от уровня требуемой детализации и сложности поверхности каждый треугольник может быть разделен еще на четыре треугольника и этот процесс может повторятся многократно. На рисунке ниже показан пример такого разделения для уровня детализации n = 0, 1 и 2

Необходимо вычислить количество красных треугольников для заданного уровня детализации n.

Input format

В первой строке задано одно целое число n (0 ≤ n ≤ 1018) – уровень детализации.

Output format

Выведите одно число – остаток от деления количества красных треугольников на (109 + 7) для заданного уровня детализации n.

(данную задачу нужно запрограммировать на языке с++. я запрограммировала, но при тестировании выдает ошибку)
#include
#include
using namespace std;
typedef unsigned long long ul;

ul modexp(ul x, ul y, ul N)
{
if (y == 0) return 1;
ul z = modexp(x, y / 2, N);
if (y % 2 == 0)
return (z*z) % N;
else
return (x*z*z) % N;
}

int main()
{
ul n, res;
cin >> n;

ul levels = n*2;
res = (((1+levels)*levels))/2;
res = modexp(res, 1, pow(10,9) + 7);
cout << res<}


Треугольники Для формирования изображения в компьютерной графике используются простейшие поверхности

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
amanullina
04.06.2022 19:11
1. Задача решается с стека (алгоритм Дейкстры для обработки обратной польской записи). Предполагается, что во вводимой строке содержится корректное выражение, удовлетворяющее условиям задания.

// PascalABC.NET 3.3, сборка 1555 от 21.10.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var w:=ReadlnString.ToWords;
  var St:=new Stack <integer>;
  var r:=0;
  foreach var t in w do
    if t[1].IsDigit then St.Push(t.ToInteger)
    else begin
      var a:=St.Pop;
      var b:=St.Pop;
      case t[1] of
      '+':St.Push(a+b);
      '-':St.Push(b-a);
      '*':St.Push(a*b)
      end;
    end;
  Writeln(St.Pop) 
end.

Контрольный пример
8 9 + 1 7 - *
-102

2. Задача крайне просто решается при регулярного выражения с рекурсией. Фактически вводить количество шаров не нужно, поэтому после ввода оно отбрасывается.

// PascalABC.NET 3.3, сборка 1555 от 21.10.2017
// Внимание! Если программа не работает, обновите версию!

begin
  Writeln(ReadlnString.ToWords.Skip(1).JoinIntoString('').
      MatchValue('(.)\1{2,}').Length);
end.

Контрольный пример
5 2 3 3 3 1
3
0,0(0 оценок)
Ответ:
крузейро
04.06.2022 19:11
1. Задача решается с стека (алгоритм Дейкстры для обработки обратной польской записи). Предполагается, что во вводимой строке содержится корректное выражение, удовлетворяющее условиям задания.

// PascalABC.NET 3.3, сборка 1555 от 21.10.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var w:=ReadlnString.ToWords;
  var St:=new Stack <integer>;
  var r:=0;
  foreach var t in w do
    if t[1].IsDigit then St.Push(t.ToInteger)
    else begin
      var a:=St.Pop;
      var b:=St.Pop;
      case t[1] of
      '+':St.Push(a+b);
      '-':St.Push(b-a);
      '*':St.Push(a*b)
      end;
    end;
  Writeln(St.Pop) 
end.

Контрольный пример
8 9 + 1 7 - *
-102

2. Задача крайне просто решается при регулярного выражения с рекурсией. Фактически вводить количество шаров не нужно, поэтому после ввода оно отбрасывается.

// PascalABC.NET 3.3, сборка 1555 от 21.10.2017
// Внимание! Если программа не работает, обновите версию!

begin
  Writeln(ReadlnString.ToWords.Skip(1).JoinIntoString('').
      MatchValue('(.)\1{2,}').Length);
end.

Контрольный пример
5 2 3 3 3 1
3
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота