栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言 水仙花数详解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言 水仙花数详解

记录:最近开始看之前c语言的一些题目,保持脑子的灵活度。

水仙花定义:水仙花数是指一个n位正整数(n>=3,)他的每个位上的数字的n次幂之和等于他本身
例如:153 = 1^ 3+5^3+3 ^3
思路分析:

  • 第一步:先输入这个n ,由此判定n 的位数范围 例如n = 3,n∈(100,999)
  • 第二步:确定此范围界限,通过变量first 每次*10遍历得到范围左边界,
  • 第三步:确定了范围,再用一个变量i 记录每次在范围内被遍历的数,分解这个i,得到它的个位,十位,百位…最高位 ,通过循环依次分解i, 省去了用额外的变量存其他位
  • 第四步:定义一个变量p 用来保存这个i 的 每一位,方便进行幂次相加,通过循环一个变量j = 1,来控制幂p
  • 第五步:定义一个求和sum 保存 每次循环过的p相加(位的幂次相加),让sum 和 i 进行比较 输出
int main()
{
	int n;
	scanf("%d",&n);
	
	int first = 1;//用来 存开始的数 定n位正整数的范围
	int i= 1; 
	while(i
		first *= 10;
		i ++;
	}
	//找出所有三位数 ,就要遍历100-999
	
	i = first;
	while( i
		// 我们要分解这个i, 算出他的n次幂 
		int t =i;
		int sum = 0;
		do {
			int d = t%10;//个位
			t/=10;
			int p = d;
			int j = 1;//控制幂次 
			while ( j
				p *= d;
				j++;
			}
			sum += p;
		} while ( t>0 );
		if ( sum == i ) {
			printf("%dn", i);
		}
		i++; 
	} 
	
	  
	return 0;//前端小白兔ggogo
 } 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/913568.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号