Codeforces Global Round 27 (A~F)

Codeforces Global Round 27icon-default.png?t=O83Ahttps://codeforces.com/contest/2035

A. Sliding

先算跨行填补的:从 r+1 行开始每一行第一个会填补到上一行最后一个,距离为 m,这些总距离就是 (n-r)*m

再算距离为 1 的:第 r 行的 m-c 个,r+1 行开始后面每行 m-1 个,总共就是 (n-r)*(m-1)+m-c 

//#pragma GCC optimize(3,"Ofast","inline")
#include<bits/stdc++.h>
#define rep(i,a,b) for (int i=a;i<b;++i)
#define per(i,a,b) for (int i=a;i>b;--i)
#define se second 
#define fi first
#define endl '\n'
#define all(x) (x).begin(),(x).end()
#define pii pair<int,int>
#define pli pair<LL,int>
#define pll pair<LL,LL>
#define MEM(a,x) memset(a,x,sizeof(a))
#define OJBK {cout<<"ok"<<endl;return;}
inline int Ls(int p){return p<<1;}
inline int Rs(int p){return p<<1|1;}
typedef long long LL;
typedef unsigned long long ULL;
using namespace std;
typedef double db;
const int MOD=998244353;
const int N=1e5+10;

inline void Solve()
{
	int n,m,a,b;
	cin>>n>>m>>a>>b;
	LL ans=(LL)(n-a)*(m-1)+(LL)m*(n-a)+m-b;
	cout<<ans<<endl;
}
int main()
{
	#ifndef ONLINE_JUDGE
		freopen("1.in","r",stdin);
		freopen("1.out","w",stdout);
	#endif
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int _=1;
	cin>>_;
	while(_--){
		Solve(); 
	}
	return 0;
}

B. Everyone Loves Tres

十进制数可以写成 \sum a_i*10^i 的形式,本题 a_i = 3,6 ,只需要求满足 \sum a_i *10^i \pmod {66} =0 的最小值。

打表出 10^i \pmod{66} 的结果:

10^0 mod 66 = 1
10^1 mod 66 = 10
10^2 mod 66 = 34
10^3 mod 66 = 10
10^4 mod 66 = 34
10^5 mod 66 = 10
10^6 mod 66 = 34
10^7 mod 66 = 10
10^8 mod 66 = 34
10^9 mod 66 = 10
10^10 mod 66 = 34
10^11 mod 66 = 10
10^12 mod 66 = 34
10^13 mod 66 = 10
10^14 mod 66 = 34
10^15 mod 66 = 10
10^16 mod 66 = 34
10^17 mod 66 = 10
10^18 mod 66 = 34
10^19 mod 66 = 10

可以发现后面结果都是10和34循环了,而且注意到有 3\cdot 10 + 3 \cdot 34 \pmod {66} =0 成立,所以对于偶数的情况就是最低两位填 66,高位全部填 3;奇数的情况就是不足5位不满足,否则最低 5 位填 36366,高位全部填 3。

//#pragma GCC optimize(3,"Ofast","inline")
#include<bits/stdc++.h>
#define rep(i,a,b) for (int i=a;i<b;++i)
#define per(i,a,b) for (int i=a;i>b;--i)
#define se second 
#define fi first
#define endl '\n'
#define all(x) (x).begin(),(x).end()
#define pii pair<int,int>
#define pli pair<LL,int>
#define pll pair<LL,LL>
#define MEM(a,x) memset(a,x,sizeof(a))
#define OJBK {cout<<"ok"<<endl;return;}
inline int Ls(int p){return p<<1;}
inline int Rs(int p){return p<<1|1;}
typedef long long LL;
typedef unsigned long long ULL;
using namespace std;
typedef double db;
const int MOD=998244353;
const int N=1e5+10;

inl
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值