今心laity※ 2021-10-23 16:01 采纳率: 91.7%
浏览 18
已结题

使用MATLAB编写⼀个函数 nacissistic(base,n),⽤于求base进制的n位的⾃恋数

img


编写⼀个函数 nacissistic(base,n),⽤于求base进制的n位的⾃恋数。
– n位⾃恋数指该数各位的n次幂之和等于该数

  • 写回答

1条回答 默认 最新

  • joel_1993 2021-10-23 17:02
    关注

    你好,之前貌似回答过这个问题,我觉得只有我的方法最简单高效:

    function [S, R]= nacissistic(base, n)
    A = cell(1,n);
    [A{:}] = ndgrid(0:base-1);
    for i = 1:n
        A{1,i} = A{1,i}(:);
    end
    A = cell2mat(A);%所有可能的n位base进制数
    A(A(:,1)==0,:) = [];%去除最高位为0的数
    B = sum(A.^n,2);%每个数的位置依次n次方相加,表示成十进制
    N = repmat(n-1:-1:0,size(A,1),1);% 幂指标
    C = sum(A.*base.^N,2);%每个n位base进制数表示成十进制
    p = B==C;
    S = C(p,1); % 这个是10进制下的结果
    R = A(p,:); % 这个是base进制的行向量,每一行代表一个数,列代表位数
    if(base<=36) % 36进制以内都可以用数字字母表示
       S = dec2base(S,base,n);
    end
    end
    

    比如说调用:

    [S, R]= nacissistic(16, 3)
    

    结果

    S =
    
      19×3 char 数组
    
        'EA0'
        '5B0'
        '8C0'
        'EA1'
        '5B1'
        '8C1'
        '173'
        'AC3'
        '285'
        '4A5'
        '156'
        '208'
        '248'
        'CA8'
        'E69'
        'AA9'
        '99A'
        '60B'
        '64B'
    
    
    R =
    
        14    10     0
         5    11     0
         8    12     0
        14    10     1
         5    11     1
         8    12     1
         1     7     3
        10    12     3
         2     8     5
         4    10     5
         1     5     6
         2     0     8
         2     4     8
        12    10     8
        14     6     9
        10    10     9
         9     9    10
         6     0    11
         6     4    11
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月1日
  • 已采纳回答 10月24日
  • 创建了问题 10月23日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀