Формула числа

Формула числа

Для любого числа x верно следующее равенство: Что означает: любое число можно можно представить в виде суммы степеней двоек. Этим и воспользуемся, поскольку пользоваться скобкам по условию задачи нельзя.

#include <stdio.h> #include <string.h> #include <stdlib.h>   char str[100]; char formula[10000];   void GetFormula(int x) {     _i64toa(x, str, 2);     char f[200];     formula[0] = 0;       int i, p = 0, j;     for(i = strlen(str) - 1; i >= 0; i--, p++)     {         if(str[i] == '0') continue;         if(p == 0) { formula[0] = '1'; formula[1] = 0; continue; }         f[0] = 0;         for(j = 0; j < p; j++)         {             strcat(f, "2*");         }         f[strlen(f) - 1] = 0;           if(formula[0] != 0)         strcat(formula, "+");         strcat(formula, f);     } }   int main() {     int n;     scanf("%d", &n);       GetFormula(n);       puts(formula);       return 0; }



Источник: qa-help.ru


Добавить комментарий