3.2w+
社区成员
#include <iostream>
#include <vector>
using namespace std;
int ans = 0;
int day[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
for(int year = 1900; year <= 9999; year ++)
{
for(int month = 1; month <= 12; month ++)
{
int tmp = year;
int sum1 = 0;
while(tmp)
{
sum1 += tmp % 10;
tmp /= 10;
}
tmp = month;
int sum2 = 0;
while(tmp)
{
sum2 += tmp % 10;
tmp /= 10;
}
for(int i = 1; i <= day[month]; i++)
{
int sum3 = 0;
int tmp = i;
while(tmp)
{
sum3 += tmp % 10;
tmp /= 10;
}
if(sum1 == sum2 + sum3)
{
ans ++;
}
}
if(month == 2)
{
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
{
if(sum1 == sum2 + 2 + 9)
{
ans ++;
}
}
}
}
}
cout << ans << endl;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
cout << 494 << endl;
return 0;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int INF = 0x3f3f3f;
const int N = 1e6;
int n,m;
//思路:先预处理经过m次操作后的数字的位置,然后直接放数字即可
int main()
{
cin >> n >> m;
vector<pair<int, int>> v(n);
//初始权重为自己的位置
for(int i = 0; i< n; i++)
{
v[i].first = i + 1; //自己的位置
v[i].second = i + 1;
}
int left = -1, right = n + 1;
while(m --)
{
char op;
int num;
cin >> op >> num;
if(op == 'L')
{
v[num - 1].first = left;
//表示下一个到最左边的数 需要 比当前最左边的数 还要左
left --;
}
else
{
v[num - 1].first = right;
right ++;
}
}
sort(v.begin(), v.end());
for(auto it : v)
{
cout << it.second << ' ';
}
return 0;
}
#include <iostream>
using namespace std;
//思路:最大gcd -- 也就说明 如果某个区间中的数字 都是 gcd的倍数的话,则说明这个区间就是满足条件的
//【题目可知 这区间可最大存在一个元素不满足是gcd的倍数,即 对其进行修改】
//也就是说,此时题目转换为:找出长度 >=2 的子数组中最多存在1个元素不满足是gcd的倍数
int n,g;
const int N = 1e5 + 10;
int a[N];
int main()
{
cin >> n >> g;
//此时我们可以转换数组的值
//用1表示这个元素是满足gcd的倍数,0表示不满足
for(int i = 1; i <=n; i++)
{
int tmp;
cin >> tmp;
a[i] = (tmp % g == 0 ? 1 : 0);
}
int ans = 0;
//找子数组 -- 枚举右端点
for(int i = 2; i <= n; i++)
{
//计算这个区间中出现了0的个数
int flags = 0;
if(a[i] == 0)
{
flags ++;
}
int j = i - 1;
//从右往左 枚举 左端点
while(j >= 1)
{
if(a[j] == 0)
{
flags ++;
}
if(a[j] != 0 || flags <= 1)
{
ans ++;
j --;
}
if(flags > 1)
{
break;
}
}
}
cout << ans << endl;
return 0;
}