• C语言 自幂数


    自幂数,也称Armstrong数,是指一个 n 位数,它的每个位上的数字的n 次幂之和等于它本身。
    要求程序输入一个正整数m(m≤1000000),按照指定格式输出m以内所有的自幂数。

    解答:

    #include<stdio.h>
    typedef long long ll;
    ll qpower(ll a, ll b) {
    	ll ans = 1ll;
    	while(b) {
    		if(b & 1) {
    			ans *= a;
    		}
    		b >>= 1;
    		a *= a;
    	}
    	return ans;
    }
    
    int check(ll num, ll wei) {
    	ll t = 1;
    	ll ans = 0;
    	ll tmp = num;
    	while(num) {
    		ans += qpower((num % 10), wei);
    		num /= 10;
    		t++;
    		if(ans > tmp) {
    			return 0;
    		}
    	}
    	if(ans == tmp) {
    		return 1;
    	}
    	return 0;	
    }
    int main () {
    	ll num;
    	printf("Please input a positive number:");
    	scanf("%lld", &num);
    	ll i = 0;
    	ll wei = 1;
    	ll cem = 10;
    	ll tmp = 1;
    	ll isok = 0;
    	printf("The Armstrong number within %lld are:", num);
    	for(i = 0; i < num; ++i) {
    		if(i != 0 && i % cem == 0) {
    			if(!isok) {
    				printf("\nn=%lld:No number!", wei);
    			}
    			isok = 0;
    			wei++;
    			cem *= 10;
    			tmp = 1;
    
    		}
    		if(check(i, wei)) {
    			if(tmp) {
    				printf("\nn=%lld:", wei);
    				tmp = 0;
    				isok = 1;
    			}
    			printf("%lld ", i);
    		}
    	}
    	if(!isok) {
    		printf("\nn=%lld:No number!", wei);
    	}
    	printf("\n");
    	return 0;
    }
    
    作者:LightAc
    出处:https://www.cnblogs.com/lightac/
    联系:
    Email: dzz@stu.ouc.edu.cn
    QQ: 1171613053
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    网页轮播图案例
    表单
    表格标签的使用
    HTML5标签2
    HTML标签
    外边距
    h5css产品模块设计
    mouseenter 和mouseover的区别
    动画函数封装
    jQuery 插件
  • 原文地址:https://www.cnblogs.com/lightac/p/15637790.html
Copyright © 2020-2023  润新知