[牛客]BC38 变种水仙花

BC38

判断是不是自幂数(水仙花数)

题目描述

参考代码:

c 复制代码
//直接暴力求解
//先计算某个数有几位 然后分别拿到每一位进行计算
#include<math.h>

//计算num是几位数
int numOfDigit(int num)
{
	int count = 0;
	//153 1     15  2    1 3
	while (num > 0)
	{
		count++;
		num /= 10;
	}
	return count;
}

//拿到num的每一位数求和 判断是不是自幂数
int isSelfPower(int num)
{
	int sum = 0;//求和
	int count = numOfDigit(num);//num是几位数
	int flag = num;//用于保存初始num的值

	//1234  4       123   3       12 2     1 1
	while (num > 0)
	{
	    //pow的返回值类型是double
		sum += (int)pow(num % 10, count);
		num /= 10;
	}
	return sum == flag;
}

int main()
{
	int i = 0;
	for (i = 1; i <= 100000; i++)
	{
		if (isSelfPower(i))
			printf("%d ", i);
	}
	return 0;
}

BC38 变种水仙花

题目链接

点我做题

解析

注意下面的sum = 0

每次循环都要把sum置为0 否则sum会保持上次计算的结果

12345:

1(12345/10000) 2345(12345%10000)

12(12345/1000) 345(12345%1000)

123(12345/100) 45(12345%100)

1234(12345/10) 5(12345%10)

参考代码:

c 复制代码
#include <math.h>
#include <stdio.h>

int main() {
    int i = 0;
    int j = 0;
    int sum = 0;
    for (i = 10000; i <= 99999; i++) {
        sum = 0;
        for (j = 1; j <= 4; j++) {
            int k = pow(10, j);
            //sum+=(i/k)*(i%k);
            sum += (i / (int)pow(10, j)) * (i % (int)pow(10, j));
        }
        if(sum == i)
        printf("%d ",i);
    }
    return 0;
}
相关推荐
Nil2083 小时前
leetcode 198打家劫舍
算法·leetcode·职场和发展
Shaoshing4 小时前
前缀和与差分
java·数据结构·算法·前缀和·差分
loulanyue_4 小时前
构建房产认知决策智能:Harness底座与AI自进化的技术实践——读贝壳首席算法科学家尹俊希2026云栖专场演讲
人工智能·算法
碧海银沙音频科技研究院4 小时前
基于炬芯ATS录音卡BLE控制协议
人工智能·嵌入式硬件·算法·语音识别
suhan5 小时前
【数据结构】三、栈和队列:6.链队列、双端队列、队列的应用(树的层次遍历、广度优先BFS、先来先服务FCFS)
数据结构·后端·算法
姜鱼问生5 小时前
Docker Volume 备份与恢复实战:不停机迁移数据
后端·算法·架构
suhan5 小时前
【数据结构】三、栈和队列:5.顺序队列(循环队列)(初始化,判空判满,入队,出队,实例)
数据结构·后端·算法
suhan5 小时前
【数据结构】三、栈和队列:3.链栈(链栈栈的初始化,判空,进栈,出栈,读取栈顶,链栈实例)
数据结构·后端·算法
大雄很用心5 小时前
如何理解时间复杂度与空间复杂度?| 面试刷题笔记02
算法
姜鱼问生5 小时前
服务器磁盘满了?从告警到清理的完整排查
后端·算法·架构