已知数列1,1,2,2,3,3,4,4,5,5…在这个数列前 n 个数中任意选择几个数出来,使他们的和为完全平方数,并且使这个和尽可能的大,让你帮助算一下这个数最大为多少。
输入:n
输出:最大平方数
小伙伴们,别被那一串数列和“任意选择”吓到啦
思路:因只要求输入n,输出最大平方数,所以我们只需找出输入数据与输出数据的关系即可->>即简化为"找规律"的类型
注:后面可能存在很大的平方数,因此要用long long
法一:(初次发现的规律)
#include<stdio.h> int main() { long long int n,m,a; scanf("%lld",&n); m=n/2; if(n==1) a=1; else //分了奇偶来判断 { if(n%2==0) a=m*m; else if(n%2!=0) { m=m+1; a=m*m; } } printf("%lld",a); return 0; }
法二:(更简单)
#include<stdio.h> int main() { long long n,m,a; scanf("%lld",&n); if(n==1) a=1; else { m=(n+1)/2; a=m*m; } //找输入与输出的直接关系 printf("%lld",a); return 0; }