1条回答 默认 最新
- joel_1993 2021-10-20 19:35关注
你好,这个自恋数我已经写过代码了:
function main() [S, R]= nacissistic(16, 3)% 比如这个16进制三位数 end 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 = 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
可见16进制三位数的自恋数足足有19个
然后改动主函数那一行,改成
[S, R]= nacissistic(10, 3)% 比如这个10进制三位数
结果:
S = 4×3 char 数组 '370' '371' '153' '407' R = 3 7 0 3 7 1 1 5 3 4 0 7
可见10进制3位数的自恋数有4个,哈哈哈
其他的自己都可以测试哟,有帮助望采纳,谢谢啦解决 无用评论 打赏 举报
悬赏问题
- ¥15 javaweb项目无法正常跳转
- ¥15 VMBox虚拟机无法访问
- ¥15 skd显示找不到头文件
- ¥15 机器视觉中图片中长度与真实长度的关系
- ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
- ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
- ¥15 java 的protected权限 ,问题在注释里
- ¥15 这个是哪里有问题啊?
- ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
- ¥15 texstudio的问题,