4.2w+
社区成员
#include <iostream>
using namespace std;
int main()
{
int ans = 0;
for(int i = 1; i <= 2020; i++)
{
int tmp = i;
while(tmp)
{
int x = tmp % 10;
if(x == 2)
{
ans ++;
}
tmp /= 10;
}
}
cout << ans << endl;
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
long long n = 2021041820210418;
//本质:找一个数的所有约数
int main()
{
// vector<long long> v;
// for(int i = 1; i <= n / i; i++)
// {
// if(n % i == 0)
// {
// v.push_back(i);
// //顺便将另外一个约数也给输入进来
// if(n / i != i)
// {
// v.push_back(n / i);
// }
// }
// }
// long long ans = 0;
// for(int i = 0; i < v.size(); i++)
// {
// for(int j = 0; j < v.size(); j++)
// {
// for(int k = 0; k < v.size(); k++)
// {
// if(v[i] * v[j] * v[k] == n) ans ++;
// }
// }
// }
// cout << ans << endl;
cout << 2430 << endl;
return 0;
}
// 敬请期待
#include <iostream>
#include <algorithm>
using namespace std;
int n,m;
const int N = 1e5 + 10;
long long a[N], sum[N];
long long b[N];
//贪心:
//统计 每个下标出现在区间查询中的 次数
//然后 与 原数组进行比对,将区间查询中出现最多次数的 与 数组中数字大的相匹配
//从而 获取到最大的数字
//而当去计算 答案最大和时,有一个很巧妙的公式:其实就是把所有询问的区间内出现过的 【数字 * 出现次数】 相加
//【统计 区间查询中数字出现的次数 -- 可以用 差分统计】
//因为此时 相当于 查询一次,就在这 查询区间上的位置 都 +1,表示 出现了一次
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
{
cin >> b[i];
}
cin >> m;
while(m --)
{
int l, r;
cin >> l >> r;
a[l] ++;
a[r + 1] --;
}
//对应原数组的每个数字的查询次数
for(int i = 1; i <= n; i++)
{
sum[i] = sum[i - 1] + a[i];
}
long long sum1 = 0, sum2 = 0;
for(int i = 1; i <= n; i++)
{
sum1 += b[i] * sum[i];
}
sort(sum + 1, sum + 1 + n);
sort(b + 1, b + 1 + n);
for(int i = 1; i <= n; i++)
{
sum2 += b[i] * sum[i];
}
cout << sum2 - sum1 << endl;
return 0;
}