蓝桥杯数学题,找不到规律就枚举

蓝桥杯的特点:暴力破解
例题:
2016年蓝桥杯B组C/C++省赛第8题
第八题:四平方和
四平方和定理,又称为拉格朗日定理:
每个正整数都可以表示为至多4个正整数的平方和。
如果把0包括进去,就正好可以表示为4个数的平方和。

比如:

5 = 0^2 + 0^2 + 1^2 + 2^2
7 = 1^2 + 1^2 + 1^2 + 2^2
(^符号表示乘方的意思)
对于一个给定的正整数,可能存在多种平方和的表示法。
要求你对4个数排序:
0 <= a <= b <= c <= d
并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法

程序输入为一个正整数N (N<5000000)
要求输出4个非负整数,按从小到大排序,中间用空格分开

例如,输入:
5
则程序应该输出:
0 0 1 2

再例如,输入:
12
则程序应该输出:
0 2 2 2

再例如,输入:
773535
则程序应该输出:
1 1 267 838
资源约定:
峰值内存消耗 < 256M
CPU消耗 < 3000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

看不出什么名堂,直接暴力枚举

#include<stdio.h>
#include<math.h>
int main(){
	int n;
	int i,j,k,l;
	scanf("%d",&n);
	//从0开始枚举
	for(i=0;i<=sqrt(n);i++){
		for(j=0;j<=sqrt(n);j++){
			for(k=0;k<=sqrt(n);k++){
				for(l=0;l<=sqrt(n);l++){
					if(i*i+j*j+k*k+l*l==n){
						printf("%d %d %d %d",i,j,k,l);
						return 0;
					}
				}
			}
		}
	}
	return 0;
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用lombok的时候,如果不到枚举的get方法,有以下几种可能的原因和解决办法: 1. 枚举类的定义问:首先要确认枚举类是否正确定义了相应的get方法。Lombok通常会根据属性自动生成get方法,但是对于枚举,由于其特殊性,可能需要手动定义get方法。 2. Lombok的版本问:确定所使用的Lombok版本是否与项目的其他依赖或配置相兼容。有时候不同的Lombok版本在处理枚举的方式上会有一些差异,因此确认版本是否一致或尝试更新Lombok版本可能有助于解决问。 3. IDE的插件问:检查IDE中使用的Lombok插件是否已正确安装和启用。Lombok提供了对IDE的插件支持,以便在编译时生成getter和setter等方法。确保插件已正确安装并启用,以便正确生成get方法。 4. 编译问:重新编译项目并确保没有编译错误。有时候编译错误或配置错误可能导致Lombok无法生成相应的get方法。重新编译项目可以解决这个问。 如果上述方法都没有解决问,建议在具体情况下进一步检查代码和相关配置,或寻求Lombok相关的文档、社区或支持渠道的帮助。 ### 回答2: 使用lombok时不到枚举的get方法可能是因为在枚举类中使用了`@Getter`注解,而枚举类的成员默认都是public static final类型,可以直接通过枚举名称访问,无需通过get方法。 假如枚举类代码如下: ``` @Getter public enum MyEnum { VALUE1, VALUE2, VALUE3; } ``` 在使用lombok的情况下,可以直接通过枚举名称访问: ``` MyEnum myEnum = MyEnum.VALUE1; System.out.println(myEnum); ``` 此时就可以正确输出枚举的值VALUE1了。 另外,如果在枚举类中定义了成员变量,并且使用了`@Getter`注解,那么lombok会自动生成get方法。如以下代码: ``` @Getter public enum MyEnum { VALUE1("A"), VALUE2("B"), VALUE3("C"); private String code; MyEnum(String code) { this.code = code; } } ``` 在此情况下,就可以通过get方法获取枚举类中的成员变量了: ``` MyEnum myEnum = MyEnum.VALUE1; System.out.println(myEnum.getCode()); ``` 上述代码将输出枚举类中VALUE1的成员变量code的值"A"。所以,如果使用lombok不到枚举的get方法,可以先确保枚举的成员是public static final类型,然后尝试直接通过枚举名称来访问。如果枚举类中定义了成员变量,可以使用get方法来获取成员变量的值。 ### 回答3: 使用Lombok时不到枚举的get方法可能是因为以下几个可能原因: 1. 枚举类中未定义相应字段或get方法:Lombok会根据Java类的字段自动生成相应的getter和setter方法,如果枚举类中未定义相应字段或get方法,可能会导致不到相应的get方法。 2. Lombok的版本不兼容:不同版本的Lombok在生成getter和setter方法时可能有一些差异,如果使用的Lombok版本与IDE或编译器不兼容,可能会导致不到枚举的get方法。 3. IDE或编译器设置问:有些IDE或编译器中可能需要手动设置才能正确识别和生成Lombok的注解,如果没有正确设置,可能会导致不到枚举的get方法。 针对以上问,可以尝试以下解决方法: 1. 确认枚举类中定义了需要的字段或get方法,如果没有定义,可以手动添加相应的字段和get方法。 2. 更新Lombok的版本,确保Lombok的版本与IDE或编译器兼容。 3. 检查IDE或编译器的设置,确保已经正确配置Lombok的注解处理,例如在IDE中可以确认是否安装了Lombok插件,并启用了注解处理功能。 4. 如果以上方法仍然不能解决问,可以尝试使用传统的方式手动编写枚举类的get方法,或者考虑使用其他的代码生成工具代替Lombok。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值