11. 水仙花数
创始人
2024-05-29 01:05:13

1 题目描述

水仙花数

成绩20开启时间2021年09月30日 星期四 18:00
折扣0.8折扣时间2021年10月18日 星期一 00:00
允许迟交关闭时间2021年12月1日 星期三 00:00

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153

水仙花数是3位自幂数。

给定区间范围[L , R],求范围内的自幂数(各位数字的n次方之和,n为数字的位数)的个数以及数字。

10 ≤ L ≤ R ≤ 10^9


输入格式

一行两个整数L,R (均为正整数)。


输出格式

第一行一个整数,表示区间内([L,R])自幂数 数的个数。

接下来按升序每一行输出一个自幂数。

 

 测试输入 期待的输出 时间限制 内存限制 额外进程
测试用例 1以文本方式显示
  1. 10 1000↵
以文本方式显示
  1. 4↵
  2. 153↵
  3. 370↵
  4. 371↵
  5. 407↵
1秒64M0

2 代码

/* 这样子直接写的会超过时间限制*/
/*
#includeusing namespace std;int judgedigit(int n){int i=0;while(n>=10){n /= 10;i++;}i++;return i;
}int main(int argc,char *argv[]){int left,right;int counter=0; //水仙花数的个数int digit; //数字是几位的int i,j;int result=0; //保存每个数各位数字n次方的和的结果int  tempi;struct node{int data;struct node *next;};typedef struct node NODE;NODE *narci, *head,*temp;narci = (NODE*)malloc(sizeof(NODE));narci->data = 0;narci->next=NULL;head = narci;freopen("file in.txt","r",stdin);cin>>left;cin>>right;// 是否符合要求进行判断if(left<10||left>right||right>1e9){return 0;}for(i=left;i<=right;i++){// 遍历每一个数digit = judgedigit(i);tempi = i;// 每一次result都要初始化,不然值会一直累加下去result = 0;for(j=0;jdata = i;// 尾插法temp->next = narci->next;narci->next = temp;narci = temp;counter ++;}}narci = head->next;    cout<data<next;}free(narci);    free(head);return 0;}
*//*
//第一次听说的“偷懒”方法,把限定范围内的所有水仙花数都在另一个程序里求出来,
然后在这个程序里面建立一个数组直接存进去,然后查找*///可以输出n位水仙花数的程序
/* 
因为math.pow这个函数运行的特别慢,所以我们在后续的编写过程中,尽量不要用pow,最好自己写个pow,(而且pow返回的是double型)
*/
/* 
#include
long long pow(int a,int b)
{long long sum=1;for(int i=1;i<=b;i++)sum=sum*a;return sum;
}int main()
{int a,t,i,n;long long sum=0;scanf("%d",&n);for(i=pow(10,n-1);i<=pow(10,n)-1;i++){a=i;sum=0;for(int b=1;b<=n;b++){t=a%10;a/=10;sum=sum+pow(t,n);}if((int) sum==i)printf("%d\n",i);}
}
*/#include
using namespace std;int main(int argc, char *argv[]){int narci[22]={153,370,371,407,1634,8208,9474,54748,92727,93084,548834,1741725,4210818,9800817,9926315,24678050,24678051,88593477,146511208,472335975,534494836,912985153};int left,right;int edgeleft,edgeright;edgeleft = 0;edgeright = 21;    //freopen("file in.txt","r",stdin);cin>>left;cin>>right;// 是否符合要求进行判断if(left<10||left>right||right>1e9){return 0;}while(edgeleft<=edgeright){if(edgeleft<=edgeright&&narci[edgeleft]// 往右边走一个edgeleft++;}if(narci[edgeright]>right&&edgeleft<=edgeright){edgeright--;}if(narci[edgeleft]>=left&&narci[edgeright]<=right){break;}}cout<cout<

相关内容

热门资讯

世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...