3-代码源C队模拟赛2026-8-2赛后总结

2026-8-2代码源C队模拟赛-3赛后总结

别问我标题为什么是C队模拟赛-3

比赛概述+难点分析:

  1. 本场比赛共4道题,时长共4小时。
  2. 比赛为OI赛制(比赛中看不到分数和排名)
  3. T1,T3较简单,

题目分析

T1 双面编号牌

原题链接
分析:
题目条件:

  1. 1<=a<=n;
  2. 1<=b<=m;
  3. a+b=k*b*gcd(a,b)

首先证明 a 一定是 b 的倍数:
证明:
因为 a+b=k*b*gcd(a,b) , a+bb*gcd(a,b) 的倍数, ab(gcd(a,b)-1) 倍,又因为 a>=1,b>=1 ,所以 gcd(a,b)-1!=0
因为 ab(gcd(a,b)-1) 倍且 (gcd(a,b)-1) 为自然数,所以 a 一定是 b 的倍数。
证明完毕。
最后总结出公式: a+b=k*b2,即 (a+b)%(b*b)==0 ,这道题就迎刃而解了。
警告:循环一定要开long long!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<bits/stdc++.h>
using namespace std;
long long T,n,m,ans;
int main(){
ios::sync_with_stdio(0); //快读快写
cin.tie(0);
cin >> T;
while(T--){
ans=0;
cin >> n >> m;
for(long long i=1;i<=m;i++){ //b
for(long long j=i;j<=n;j+=i){ //a是b的倍数,j+=i
if((i+j)%(i*i)==0) ans++; //利用总结出来的公式
}
}
cout << ans << "\n"; //输出
}
return 0;
}

T2 矩阵行列交换

原题链接
分析:

1

T3 石子游戏

原题链接
分析:

1

T4 二进制砝码组合

原题链接
分析:

1


结语:这是作者换到C队的第一场模拟赛,本来可以拿100分的,因为 long long 开成了 int ,遗憾失分。也希望看到这篇文章的读者不要忘了开 long long!!!