UDP广播协议叫吃饭


私信TA

用户名:Mustenaka

访问量:149517

签 名:

个人博客www.mustenaka.cn

等  级
排  名 13
经  验 25377
参赛次数 8
文章发表 197
年  龄 3
在职情况 学生
学  校 Sky_box
专  业 NE

  自我简介:

欢迎光临我的博客www.mustenaka.cn,Python,C#,U3D,C/C++开发合作可以找我

本来我的题目是从1开始的数据,这样比现在这个答案要多出一个1数据作为答案(1的5次方=1)

但是发现这样错了

范围的推理过程如下:


上边界:

以单位数最大值9为边界,9^5=59049 是五位数字,

那么5位数字增加一位为添加任何数据的极限,即 5*(9^5)=295245(即每一位都是9,当然数据是达不到的)而这样一个极限的数据是6位数,我为了编写方便,可以直接写一个最大的六位数999999(当然你也可以按照推理数据写295249),超过6位数已经不会产生数据了,这就是上边界。


下边界:

本来我是从个位数开始计算的,这样计算可以有两个数据,0和1,0的五次方为0,1的五次方为1,但可惜本题的正确答案并不包含这两个数据,那么既然错了之后,可以发现数据其实从2位数开始也未尝不可,找到几个详细的数据之后又可以发现,大概在4位数的时候,出现了一个数据的平衡点,所以可以拿4作为边界,这需要有一定的数据敏感性,建议还是老实使用10作为下边界吧。



代码:

#include<stdio.h>
#include<math.h>
int main() {
	for(int i=1000; i<=999999; i++) {
		int t1=i%10,t2=i/10%10,t3=i/100%10,t4=i/1000%10,t5=i/10000%10,t6=i/100000;//分别是个,十,白,千,万,十万位
		if(pow(t1,5)+pow(t2,5)+pow(t3,5)+pow(t4,5)+pow(t5,5)+pow(t6,5)==i)
			printf("%d\n",i);
	}//判断一下五次方数从4位开始,6位结束,或多或少(1除外)均不可能产生五次方数字
	return 0;
}

最终答案如此

4150

4151

54748

92727

93084

194979

可以直接用C++的大R输出法快速解决:(直接输出)

cout<<R"(4150
4151
54748
92727
93084
194979)"<<endl;

就可以了。

 

0.0分

10 人评分

  评论区

我想问一下为什么我这数组的赋值有问题
#include<stdio.h>
#define max(x) x*x*x*x*x
int main()
{
	int i,j;
	int shu[10];
	for(i = 0 ; i < 1000000 ; i++){
		
		for(j = 0 ; j < 10 ; j++){//让存数的数组每位都为0 
			shu[j]=0;
		}
		int b=i;//保存一下i的数值 
		j=0;
		while(b != 0){
			if(b < 10){//当数小于10时,直接存储之后break结束 
				shu[j]=b;
				break;
			}
			shu[j++]=b%10;
			b=b%10;
			
			
		} 
		
		int sum=0;
		for(j = 0 ; j < 10 ; j++){//让每个数都乘5次方 
			sum+=max(shu[j]);
		}
		
		if(i == sum){//如果总和与i相等,输出结果 
			printf("%d\n", sum);
		}
		
	}
	return 0;
}
2022-07-31 09:58:59
不明白为什么不包括 0和1
2021-03-17 14:16:01
???
2020-10-09 10:49:20
  • «
  • 1
  • »