未命名01

2023年第十四届蓝桥杯大赛软件类省赛C/C++大学A组真题

蓝桥杯2023年第十四届省赛真题-平方差

题目描述
给定 L, R,问 L ≤ x ≤ R 中有多少个数 x 满足存在整数 y,z 使得 x = y2 − z2。

输入格式
输入一行包含两个整数 L, R,用一个空格分隔。

输出格式
输出一行包含一个整数满足题目给定条件的 x 的数量。

第一次尝试

#include <stdio.h>
long long arr[100002];
int main()
{
	int L;
	int R;
	int i;
	int m;
	int p;
	int n=0;
	int count=0;
	scanf ("%d",&L);
	scanf ("%d",&R);
	int brr[R-L+2];
	for(int i = 0; i <= R-L+1; i ++){
		brr[i] =0;
	}
	int num=R+1;
	for (i=0;i<=num;i++){
		arr[i]=i*i;
	}
	for (i=0;i<num;i++){
		for (m=1;m<=num;m++){
			if (arr[m]-arr[i]>=L&&arr[m]-arr[i]<=R){
				brr[arr[m] - arr[i] - L] = 1;
			}
		}
	}
	for(i = 0; i <= R-L+1; i ++){
		count += brr[i];
	}
	printf ("%d",count);
	return 0;
}

第二次尝试

#include <stdio.h>
#include <math.h>

int fun(int x);
int fun2(int x); 

int main(){
	int L;
	int R;
	scanf ("%d",&L);
	scanf ("%d",&R);
	int ans = 0;
	ans = fun2(R) - fun2(L-1);
	printf("%d",ans);
	return 0;
}
int fun2(int x){
	int a=(x+1)/2;
	int b=x/4;
	return a+b;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值