zoukankan      html  css  js  c++  java
  • C语言计算任意数的任意次方

     

    #include "stdio.h"  
    #include"stdlib.h"  
    #define max 500  
    void yiwei(int *a,int n,int m)  
    {  
        for(int i=m-1;i>=0;i--)  
        {  
            if(i-n>=0)  
            {  
                a[i]=a[i-n];  
                //a[i-n]=0;  
            }  
            else 
                a[i]=0;  
        }  
    }  
    void main()  
    {  
        int a[max],bb[max],b[max][max],c[max],m,n,temp,i,j,k;  
        scanf("%d%d",&m,&n);  
        printf("提示:默认结果不超过500位,如果超过500位则出错!
    ");  
        printf("%d的%d次方:",m,n);  
        for(i=0;i<max;i++)  
        {  
            a[i]=0;  
            c[i]=0;  
            for(j=0;j<max;j++)  
                b[i][j]=0;  
        }  
        if(m<10)  
            a[0]=m;  
        else 
        {  
            temp=m;  
            j=0;  
            while(temp!=0)  
            {  
                a[j]=temp%10;  
                temp=temp/10;  
                j++;  
            }  
        }  
        //////  
        //m=16;126  
        while (n>1)  
        {  
            for(i=0;i<max;i++)  
                for(j=0;j<max;j++)  
                    b[i][j]=0;  
                for(i=0;i<max;i++)  
                    bb[i]=a[i]*m;  
                for(i=0;i<max;i++)  
                    if(bb[i]<10)  
                        b[i][0]=bb[i];  
                    else 
                    {  
                        temp=bb[i];  
                        for(j=0;j<max;j++)  
                        {  
                            b[i][j]=temp%10;  
                            temp=temp/10;  
                        }  
                    }  
                    for(i=0;i<max;i++)  
                    {  
                        yiwei(b[i],i,max);  
                    }  
                    //右加  
                    for(i=0;i<max;i++)  
                    {  
                        for(j=0;j<max;j++)  
                            c[i]=c[i]+b[j][i];  
                    }  
                    //c移位  
                    for(i=0;i<max;i++)  
                    {  
                        if(c[i]>=10)  
                        {  
                            temp=c[i];  
                            j=i;  
                            while(temp!=0)  
                            {  
                                if(j==i)  
                                    c[j]=temp%10;  
                                else 
                                    c[j]=c[j]+temp%10;  
                                j++;  
                                temp=temp/10;  
                            }  
                        }  
                    }  
                    for(i=0;i<max;i++)  
                    {  
                        a[i]=c[i];  
                        c[i]=0;  
                    }  
                    n--;  
        }  
          
        for(i=max-1;i>=0;i--)  
        {  
            if(a[i]!=0)  
                break;  
        }  
        for(;i>=0;i--)  
            printf("%d",a[i]);  
        printf("
    ");  
        system("pause");  
    }  

    本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/702538

  • 相关阅读:
    python CreateUniqueName()创建唯一的名字
    node 创建静态服务器并自动打开浏览器
    基于jQuery 的插件开发
    Fetch
    纯css 来实现下拉菜单
    javascript模板引擎之
    jquery jsonp 跨域
    数据库增删改查
    Promise
    Vue.js
  • 原文地址:https://www.cnblogs.com/umgsai/p/3908243.html
Copyright © 2011-2022 走看看