C 无法理解竞争性考试?
我昨天参加了一个比赛。我无法解决下面的问题。比赛结束后,我看到了一个人的解决方案,我无法理解。他是如何在这么短的时间内做到这一点的。他申请的东西。请解释他的解决办法 您将获得两个数字C 无法理解竞争性考试?,c,algorithm,C,Algorithm,我昨天参加了一个比赛。我无法解决下面的问题。比赛结束后,我看到了一个人的解决方案,我无法理解。他是如何在这么短的时间内做到这一点的。他申请的东西。请解释他的解决办法 您将获得两个数字N和K,以及一组X X={X:X是一个自然数≤ N}您必须找到总数 属于给定元素的元素对数X[i]和X[j] 设置,使得,im/2) c+=y-m/2; printf(“%lld\n”,c); } } 提示 暴力手段: 您可以在0I上编写一个双循环,删除Python并添加C,因为代码显然是C。 2 10 4 7 3
N
和K
,以及一组X
X={X:X是一个自然数≤ N}
您必须找到总数
属于给定元素的元素对数X[i]
和X[j]
设置,使得,i
及其和可被K
整除
输入格式:
一个整数T
,后跟T
行,每行包含一对空格
分离整数N
和K
输出格式:
T
单独行上的整数。每个整数表示答案
对应于该测试用例
约束条件:
1≤T≤100
K≤N≤10^9
1≤K≤10000
样本输入(明文链接)
样本输出(明文链接)
解释
对于第一个测试用例,有10对其总和可被4整除。
(1,3)、(1,7)、(2,6)、(2,10)、(3,5)、(3,9)、(4,8)、(5,7)、(6,10)和
(7,9)
对于第二个测试用例,有7对其总和可被3整除。
(1,2)、(1,5)、(2,4)、(2,7)、(3,6)、(4,5)和(5,7)
解决方案--
#包括
int main()
{
长整型t,n,m,x,y,c=0;
scanf(“%lld”、&t);
而(t--)
{
scanf(“%lld%lld”、&n和&m);
c=0;
x=n/m;
y=n%m;
c+=((x*x*(m-1)-(m%2==0)?x:0))+x*(x-1))/2+y*x;
如果(y>m/2)
c+=y-m/2;
printf(“%lld\n”,c);
}
}
提示
暴力手段:
您可以在
0I上编写一个双循环,删除Python并添加C,因为代码显然是C。
2
10 4
7 3
10
7
#include<stdio.h>
int main()
{
long long int t,n,m,x,y,c=0;
scanf("%lld",&t);
while(t--)
{
scanf("%lld %lld",&n,&m);
c=0;
x=n/m;
y=n%m;
c+=((x*x*(m-1)-((m%2==0)?x:0))+x*(x-1))/2+y*x;
if(y>m/2)
c+=y-m/2;
printf("%lld\n",c);
}
}
N=9, K=3
1 => *2* 3 4 *5* 6 7 *8* 9 => 3
2 => 3 *4* 5 6 *7* 8 9 => 2
3 => 4 5 *6* 7 8 *9* => 2
4 => *5* 6 7 *8* 9 => 2
5 => 6 *7* 8 9 => 1
6 => 7 8 *9* => 1
7 => *8* 9 => 1
8 => 9 => 0