题目意思
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const long long mod =1000000007;
int main(){
ll k;
cin>>k;
__int128 n=k;
__int128 ans=(n*(n+1)*(n+2))/6%mod;
ll cnt=ans;
cout<<cnt<<endl;
}
F松鼠排序
注意给的数是连续的
#include<iostream>
using namespace std;
const int N=1e5+10;
int a[N];
int main()
{
int n;
cin>>n;
int ans=0;
for(int i=1;i<=n;++i)cin>>a[i];
for(int i=1;i<=n;++i)
{
while(a[i]!=i)
{
swap(a[i],a[a[i]]);
ans++;
}
}
cout<<ans;
}
E动物朋友
模拟题目意思即可
#include<iostream>
using namespace std;
int main()
{
int n,m,s=0;
cin>>n>>m;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
{
int k=0;
for(int j=i;j<n;j++)
{
k+=a[j];
if(k==m)
s++;
if(k>m)
break;
}
}
cout<<s;
}
注意0的位置以及其周围的数有3个1则++,注意输出
#include<iostream>
using namespace std;
const int N = 1010;
char a[N][N];
int ans;
int main()
{
int n,m;
cin >> n >> m;
for(int i = 0; i < n; i ++)
{
for(int j = 0; j < m; j ++)
{
cin >> a[i][j];
}
}
int dx[4] = {0,1,0,-1},dy[4] = {1,0,-1,0};
for(int i = 0; i < n; i ++)
{
for(int j = 0; j < m; j ++)
{
int cnt = 0;
if(a[i][j] == '0')
{
for(int k = 0; k < 4; k ++)
{
if(a[i + dx[k]][j +dy[k]] == '2')
break;
if(a[i + dx[k]][j + dy[k]] == '1')
cnt ++;
}
}
if(cnt == 3)ans ++;
}
}
if(ans != 0)
{
cout << "YES" << endl;
cout << ans << endl;
return 0;
}
cout << "NO" << endl;
return 0;
}