Tokitsukaze and a+b=n (easy) Tokitsukaze 有一个整数 n, 以及 2 个区间 [L 1 ,R 1 ], [L 2 ,R 2 ]。 她想知道有多少种选法,满足:从第一个区间选择一个整数 a (L 1 ≤a≤R 1 ),从第二个区间选择一个整数 b (L 2 ≤b≤R 2 ),使得 a+b=n。 对于两种选法,若 a, b 中有任意一个数不同,则算作不同的选法。 输入描述: 第一行包含一个整数 T (1≤T≤5),表示测试数据组数。 对于每组测试数据: 第一行包含一个整数 n (1≤n≤2⋅10 5 )。 第二行包含两个整数 L 1 , R 1 (1≤L 1 ≤R 1 ≤10 5 )。 第三行包含两个整数 L 2 , R 2 (1≤L 2 ≤R 2 ≤10 5 )。 输出描述: 对于每组测试数据,输出一个整数表示答案。得到这个题目的代码
时间: 2023-02-12 18:19:54 浏览: 118
我们第一行包括两个整数n,k(1<=n<=100,k<=6e5),表示有n个数字,目标和为k 第二行输入n个整数(c1 c2
这道题目要求你求出有多少种选法,满足从第一个区间选择一个整数a和从第二个区间选择一个整数b,使得ab=n。
输入是一个整数T,表示测试数据组数,接下来T组数据,每组数据第一行是n,第二行是区间[L1,R1],第三行是区间[L2,R2]。
输出是每组数据的答案,一个整数。
我们可以枚举第一个区间的所有数,判断它是否在第二个区间中有对应的数。
代码参考如下:
```
#include<bits/stdc++.h>
using namespace std;
int t,n,l1,r1,l2,r2;
int main(){
cin>>t;
while(t--){
cin>>n>>l1>>r1>>l2>>r2;
int ans=0;
for(int i=l1;i<=r1;i++){
if(n%i>=l2 && n%i<=r2){
if(n/i>=l1 && n/i<=r1){
if(n/i==i) ans++;
else ans+=2;
}
}
}
cout<<ans<<endl;
}
return 0;
}
```
阅读全文