zoukankan      html  css  js  c++  java
  • 水仙花数(自恋数)

    /************************************************************
    *设计一个函数找出水仙花数。水仙花数是指一个n位数
    *如:3位水仙花数:153=1^3 + 5^3 +3^3
    *    4位水仙花数:1634=1^4 +6^4 + 3^4 +4^4
    *请问如何用C++实现?【美国著名软件企业GS公司2007年11月面试题】
    **************************************************************/

    下面是自己用c写的一个代码,程序员面试宝典P91~~~有C++实现。

    #include<stdio.h>
    #include<stdlib.h>
    
    int a[100];
    int Find_Num(int max);
    
    int main()
    {    
        int max_number;
        printf("please input the max number:");
        scanf("%d",&max_number);
        Find_Num(max_number);
        
        //打印输出
        printf("%d	",a[0]);
        for(int i=1;i<max_number&&a[i]!=0;i++)
                printf("%d	",a[i]);
        printf("
    ");
        return 0;
    }
    
    
    int Find_Num(int max)
    {    
        int m=0;
        for(int num=0;num<max+1;num++)
        {
            int n=0; //num的位数
    
            //计算num的位数
            int tmp=num;
            do
            {
                n++;
                tmp/=10;
            }while(tmp);
    
            //存储num各位的数字
            int* wei=(int*)malloc(n*sizeof(int)); 
            if(wei==NULL)
                return 0;
            int k=n-1,t_num=num;
            while(k>=0)
            {
                wei[k--]=t_num%10;
                t_num/=10;
            }    
    
            //判断是否为水仙花数
            int* multi=(int*)malloc(n*sizeof(int)); 
            if(multi==NULL)
                return 0;
            for(int x=0;x<n;x++)
            {
                multi[x]=1;
            }
            int sum=0;
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<n;j++)
                    multi[i]*=wei[i];
                sum+=multi[i];
            }
            if(sum==num)
                a[m++]=num;
        }
        return 1;
    }

    运行结果:

  • 相关阅读:
    OnGUI 音频
    Java 8 的一些新特性
    获取文件编码格式
    js 常用 正则
    C#中这个算是什么
    数据的批量增加
    Ehcache的配置(自学,有问题请指出)
    Linux 下配置和使用java、Tomcat
    StringBuffer和StringBuildr的区别
    Oracle中复制一张表的结构,用sql语句复制一张表结构
  • 原文地址:https://www.cnblogs.com/fuxianfeng1988/p/3292893.html
Copyright © 2011-2022 走看看