CD from Codeforces Round #701 (Div. 2)

C. Floor and Mod

(⌊ab⌋=a \% b=k),易推导得:若(x)满足条件,则(x=kb+k)。直接去枚举(k),去构造(b)能取值的区间(lb)(rb)(ans+=rb-lb+1)

先构造左区间的(lb=k+1),假设左区间合法;去构造右区间的(rb=b/k-1),然后check左右区间是否满足(lb<=rb),如果满足则计入答案,否则直接(break)

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define pll pair<ll,ll>
#define pii pair<int,int>
#define vll vector<ll>
#define vpll vector<pll>
#define fastio ios::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL)
double pi = acos(-1);
const double eps = 1e-9;
const int inf = 1e9 + 7;
const ll lnf = 1e18 + 7;
const int maxn = 1e5 + 10;
ll mod = 1e9 + 7;

int main()
{
	fastio;
	int t;
	cin >> t;
	while (t--)
	{
		ll a, b;
		cin >> a >> b;
		b = min(a, b);
		ll ans = 0;
		for (ll k = 1; k < b; k++)//目的是构造b
		{
			ll lb = k + 1, rb = a / k - 1;
			//左区间的b,右区间的b
			if (k > rb)break;
			rb = min(rb, b);
			ans += rb - lb + 1;
		}
		cout << ans << endl;
	}

	return 0;

}


D. Multiples and Power Differences

(720720 = 2 * 2 * 2 * 2 * 3 * 3 * 5 * 7 * 11 * 13 = lcm(1,2,...,16)) ,这样所有数的四次方与(720720)做差都是1 到 16的倍数。

((i+j)\%2=0)的块为(720720),其余为(720720-x^4)

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define pll pair<ll,ll>
#define pii pair<int,int>
#define vll vector<ll>
#define fastio ios::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL)
double pi = acos(-1);
const double eps = 1e-9;
const int inf = 1e9 + 7;
const ll lnf = 1e18 + 7;
const int maxn = 2e5 + 10;
ll mod = 1e9 + 7;

int main()
{
	fastio;
	//cout << 2 * 2 * 2 * 2 * 3 * 3 * 5 * 7 * 11 * 13 << endl;
	int n, m;
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
		{
			int x;
			cin >> x;
			if ((i + j) & 1)
				cout << 720720 - x*x*x*x << " ";
			else cout << 720720<<" ";
		}
		cout << endl;
	}
 
	return 0;
 
}
原文地址:https://www.cnblogs.com/ruanbaiQAQ/p/14430089.html