当前位置: 首页 > article >正文

c语言水仙花,超简单讲解

效果

3或者大于3位数 每一位的位数次方相加等于 自身

例如

153

13 + 53 + 33 结果为1+125+27 =153

1634

  • 计算过程:
    • 14+64+34+44=1+1296+81+256=16341^4 + 6^4 + 3^4 + 4^4 = 1 + 1296 + 81 + 256 = 163414+64+34+44=1+1296+81+256=1634

过程

求得单独将所有位数的正数拎出来, 位次方后等于自身,打印

如何单拎出来所有位数?

11324

个位

直接模10

百/千/万

利用画个磨石刀方法

将其化为个位,然后模10

例如百位

11324/100 = 113

113 % 10 = 3 拿到百位数3

代码

写死位数

int i = 100;
	do {
		int a = i % 10;
		int b = i / 10 % 10;
		int c = i / 100;
		if (pow(a,3) + pow(b, 3) + pow(c, 3) == i)
		{
			printf("%d\n", i);
		}
		i++;
	} while (i <= 999);
	

用户指定几位的水仙花

c语言版本

int main()
{
	int i;
	printf("请输入位数(3-9):");
	scanf_s("%d", &i);
	if (i < 3 || i>9) {
		printf("不能小于三,不能大于九\n");
		return 0;
	}
	int start = pow(10, i - 1);
	int end = pow(10, i) - 1;
	// 动态分配数组
	int* allNum = (int*)malloc(i * sizeof(int));
	if (allNum == NULL) {
		printf("内存分配失败\n");
		return 1; // 退出程序
	}
	for (int j = start; j < end; j++)
	{
		int sum = 0;
		for (int k = 0; k < i; k++)
		{
			allNum[k]=(j / (int)pow(10, k)) % 10;
		}
		for (int k = 0; k < i; k++)
		{
			sum += (int)pow(allNum[k], i);
		}
		if (sum == j) {
			printf("找到水仙花了:%d\n", j);
		}
	}
}

java版本

 Scanner scanner = new Scanner(System.in);
        int i = scanner.nextInt();
        if (i < 3 || i > 9) {
            System.out.println("不能小于3,不能大于9");
            return;
        }
        int start = (int) Math.pow(10, i - 1);
        int end = (int) (Math.pow(10, i) - 1);

        for (int j = start; j < end; j++) {
            // 根据位数提取出每一位的数字,
            int[] allNum = new int[i];
            for (int k = 0; k < i; k++) {
                // 第n位就除以10的n-1次方,因为个位数不需要除以10,乘以1-1=0 10的零次方, 除以1即可,但是我们这里是从0开始符合存储数据下标,不用减去了
                allNum[k] = (int) ((j / Math.pow(10, k)) % 10);
            }
            // 收集好所有位数数据后依次位次方相加
            int sum = 0;
            for (int num : allNum) sum += (int) Math.pow(num, i);
            if (sum == j) {
                System.out.println("找到水仙花了:" + j);
            }
        }

http://www.kler.cn/a/373680.html

相关文章:

  • OpenCV 学习笔记
  • vue Element U 解决表格数据不更新问题
  • 基于微信小程序的小区管理系统设计与实现(lw+演示+源码+运行)
  • huggingface的lora与resume方法训练模型(以BERT为列)
  • 速盾:什么是高防CDN?高防CDN的用处有哪些?
  • Golang反射原理
  • Java方法重写
  • C语言的知识框架
  • CSS秘籍-高效样式技巧
  • 【成都新篇】龙信科技电子取证实验室,引领科技取证新时代
  • PIDNet(语义分割)排坑
  • HarmonyOS生命周期
  • 基于局部近似的模型解释方法
  • 【数据结构】ArrayList的模拟实现--Java
  • android12属性设置
  • 使用 NCC 和 PKG 打包 Node.js 项目为可执行文件(Linux ,macOS,Windows)
  • 设计一个灵活的RPC架构
  • AI代币是什么?AI与Web3结合的未来方向在哪里?
  • Transformer-BiGRU多特征输入时间序列预测(Pytorch)
  • WSGI、uwsgi与uWSGI
  • 【深度学习】用LSTM写诗,生成式的方式写诗系列之一
  • 下一代「自动化测试框架」WebdriverIO
  • STM32--STM32 微控制器详解
  • unity3d————Mathf.Lerp() 函数详解
  • 从0开始深度学习(21)——读写数据和GPU
  • 【Nas】X-DOC:Mac mini 安装 ZeroTier 并替换 planet 实现内网穿透