C++

Составить программу для вычисления точного значения n^n

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
int main() 
{
    char iar[50],otvet[2000];
    char c[2000];
    int a,e,d,n,o,i,j,l;
    clrscr();   
    otvet[0] = iar[0] = 0;
    e = d = 1;
    
    cout<<"Возведение в степень: a^a\n";
    printf("Введите a: "); scanf("%d", &a);
    //Переводим а в массив
    i = 0; n = a;
    while(n>0) 
    {
       o = n%10;
       for(j=i; j>0; j--)
         iar[j] = iar[j-1];
       iar[0] = o;  n = n/10;
       i++;         e = d = i;
    }
    for(j=0; j<i; j++)
       otvet[j] = iar[j];
    for(n=1; n<a; n++) //Возведение в степень
    {
        for(i=0; i<e+d; i++) c[i]=0;  //Обнуляем результат
        //Умножение
        for(i=0; i<d; i++) 
        {
           o=0; l=0;
           for(j=e-1; j>=0; j--) 
           {
              c[j+d-i]+=(otvet[j]*iar[d-1-i] + o)%10;
             if(c[j+d-i]>9) 
             {
               l=c[j+d-i]/10;
               c[j+d-i]=c[j+d-i]%10;
             }
	         o =(otvet[j]*iar[d-i-1] + o)/10+l;        
             if(j==0) c[j+d-1-i] += o;
             l=0;
           }
        }
        //Избавляемся от ведущих нулей
        e=e+d;
        while(c[0]==0) 
        {
           for(j=0; j<e-1; j++)
             c[j]=c[j+1];
           if(e!=1) e--; 
           else break;
        }
        //Выводим ответ в otvet[]
        for(i=0; i<e; i++)
           otvet[i] = c[i];
     }
    
    if(a==0) cout<<"Ответ: 0";
    else 
    {
      cout<<"Ответ: ";
      for(i=0; i<e; i++) printf("%d",otvet[i]);
    }
    
    getch();
}


Результат
Возведение в степень: a^a
Введите a: 11
Ответ: 285311670611
Добавлено: 28 Августа 2013 11:56:59 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...