顺子日期
#include<bits/stdc++.h>
using namespace std;
int main()
{
cout << "14";
return 0;
}
九进制转十进制
2 * 9^0 + 2 * 9^1 + 0 + 2 * 9^3 = 1478
刷题统计
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a,b,n,m;
cin>>a>>b>>n;
long long weekend=5*a+2*b,week=5*a;
if(n%weekend>week)m=(n/weekend)*7+5+(n%weekend-5*a)/b+((n%weekend-5*a)%b>0);
else m=(n/weekend)*7+(n%weekend/a)+(n%weekend>0);
cout<<m<<endl;
return 0;
}
修建灌木
#include <bits/stdc++.h>
using namespace std;
int n;
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
int x = max(i, n - i - 1);
cout << x * 2 << endl;
}
return 0;
}
X进制减法
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10,mod=1e9+7;
int a[N],b[N];
int main()
{
int n,la,lb;
cin>>n;
cin>>la;
for(int i=la;i>0;i--)cin>>a[i];
cin>>lb;
for(int i=lb;i>0;i--)cin>>b[i];
ll t=1;
ll sum=0;
for(int i=1;i<=la;i++)
{
int m=max(a[i],b[i])+1;//取最小的合法进制
if(m<2)m=2;
sum+=(a[i]*t-b[i]*t);
sum%=mod;
t=t*m%mod;
}
cout<<sum<<endl;
return 0;
}
统计子矩阵
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MOD = 1000000007;
const int N = 505;
ll m, n, k;
ll a[N][N];
ll ans = 0;
int main() {
cin >> m >> n >> k;
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
cin >> a[i][j];
a[i][j] += a[i][j - 1];
}
}
for (int i = 1; i <= n; i++) {
for (int j = i; j <= n; j++) {
int left = 1;
ll cur = 0;
for (int right = 1; right <= m; right++) {
cur += a[right][j] - a[right][i - 1];
while (cur > k) {
cur -= a[left][j] - a[left][i - 1];
left++;
}
ans += right - left + 1;
}
}
}
cout << ans << endl;
return 0;
}
积木画
#include<bits/stdc++.h>
using namespace std;
const int N=1e7+10,mod=1e9+7;
long long f[N][3];
int main()
{
int n;
cin>>n;
f[0][0]=1;
for(int i=1;i<=n;i++)
{
f[i][0]=(f[i-1][0]+f[i-1][1]+f[i-1][2])%mod;
if(i>=2){
f[i][0]=(f[i][0]+f[i-2][0])%mod;
f[i][1]=(f[i-2][0]+f[i-1][2])%mod;
f[i][2]=(f[i-2][0]+f[i-1][1])%mod;
}
}
cout<<f[n][0]%mod;
return 0;
}
李白打酒
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=220,mod=1000000007;
ll n,m,ans,len;
ll dp[N][N][N];
int main()
{
int t;
cin>>t;
while(t--){
cin>>n>>m; //N店 M花
len=n+m;
memset(&dp[0][0][0],0,sizeof(dp));
dp[0][0][2]=1;
for(int i=1;i<=len;i++)
for(int j=0;j<=n;j++)
for(int k=0;k<=100;k++)
{
dp[i][j][k]+=dp[i-1][j][k+1];
if(j&&k%2==0) dp[i][j][k]+=dp[i-1][j-1][k/2];
dp[i][j][k]%=mod;
}
dp[len][n][0]=dp[len-1][n][1];
cout<<dp[len][n][0]<<endl;
}
return 0;
}
砍竹子
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 200005;
int n;
ll a[N], ans = 0;
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
while (true) {
int idx = 0;
for (int i = 0; i < n; i++) {
if (a[i] > a[idx]) idx= i;
}
if (a[idx] == 1) break;
ll val = a[idx];
for (int i = idx; a[i] == val; i++) {
a[i] = sqrt(a[i] / 2 + 1);
}
ans ++;
}
cout << ans << endl;
return 0;
}