P10090 [ROIR 2022] 幼儿园的新年 (Day 2)

题目背景

翻译简化自 ROIR 2022 D2T1

题目描述

给出三个整数 n , a , b n,a,b n,a,b,求有多少对 ( x , y ) (x,y) (x,y) 满足 0 ≤ x ≤ a 0 \le x \le a 0xa 0 ≤ y ≤ b 0 \le y \le b 0yb x + y x+y x+y 不为 0 0 0 且能被 n n n 整除。

输入格式

本题多测,第一行输入一个整数 t t t,表示测试数据的组数。

接下来的 t t t 行,每行输入一组测试数据 n , a , b n,a,b n,a,b,由空格隔开。

输出格式

对于每组数据,输出一行一个数字,即符合条件的 ( x , y ) (x,y) (x,y) 数量。

输入输出样例 #1

输入 #1

4
4 2 2
4 4 4
6 5 5
8 13 17

输出 #1

1
6
5
30

说明/提示

本题使用捆绑测试。

子任务 分值 特殊性质
1 1 1 10 10 10 t = 1 t=1 t=1 a , b ≤ 1000 a,b\le1000 a,b1000
2 2 2 10 10 10 t ≤ 1000 t\le1000 t1000 a = 0 a=0 a=0
3 3 3 15 15 15 t ≤ 1000 t\le1000 t1000 a , b < n ≤ 1000 a,b<n\le1000 a,b<n1000
4 4 4 10 10 10 t ≤ 1000 t\le1000 t1000 a , b ≤ 1000 a,b\le1000 a,b1000
5 5 5 15 15 15 t = 1 t=1 t=1 n ≤ 1000 n\le1000 n1000
6 6 6 10 10 10 t ≤ 1000 t\le1000 t1000 n ≤ 1000 n\le1000 n1000
7 7 7 30 30 30 无特殊性质

对于 100 % 100\% 100% 的数据, 1 ≤ t ≤ 10 5 1 \le t \le 10^5 1t105 4 ≤ n ≤ 10 9 4 \le n \le 10^9 4n109 0 ≤ a , b ≤ 10 9 0 \le a, b \le 10^9 0a,b109

C++实现

#include <bits/stdc++.h> 
using namespace std;

int main()
{
	long long t;
	cin>>t;
	while(t--)
	{
		long long n, a, b;
		cin>>n>>a>>b;
		if(a>b)swap(a,b);             
		long long l1=a/n,l2=b/n;      
		long long sum=0;
		sum+=(n+1+n+1+l1*n-n)*l1/2;   
		sum+=(a+1)*(l2-l1);           
		long long now=l2*n+n;
		long long cnt=a+b-now+1;
		if(cnt>0)                     
		{
			long long ans=cnt/n;
			sum+=(cnt+cnt-ans*n)*(ans+1)/2;
		}
			
		cout<<sum<<endl;             
	}
}

在这里插入图片描述

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

更多推荐