m0_61684943 2021-10-19 18:06 采纳率: 73.8%
浏览 52
已结题

关于一个MATLAB的一个程序和算法

img


例如10进制的3位自恋数
153=1的三次方+5的三次方+3的三次方

  • 写回答

2条回答 默认 最新

  • 技术专家团-Joel 2021-10-20 12:08
    关注

    同学你好,函数供参考,为了调用,可以写个main函数

    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进制的行向量,每一行代表一个数,列代表位数
    end
    

    函数调用示例:
    比如10进制,3位数:

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

    结果:

    S =
    
       370
       371
       153
       407
    
    R =
    
         3     7     0
         3     7     1
         1     5     3
         4     0     7
    

    可见还是不错的

    再来一个,10进制,4位数

    [S, R]= nacissistic(10, 4)
    

    结果:

    S =
    
            1634
            9474
            8208
    
    
    R =
    
         1     6     3     4
         9     4     7     4
         8     2     0     8
    

    再来一个陌生的,11进制,3位数

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

    结果就很好玩,你应该看的是R每一行的值,每一行都是一个11进制的数(S只是11进制的数转换成10进制后的值,看不出什么名堂)

    S =
            1280
             126
            1216
            1161
             370
             855
    
    R =
    
        10     6     4
         1     0     5
        10     0     6
         9     6     6
         3     0     7
         7     0     8
    

    好有意思的事情啊,有帮助还望题主给个采纳支持一下答主答题哦,谢谢啦

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月29日
  • 已采纳回答 10月21日
  • 创建了问题 10月19日

悬赏问题

  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改