A
#include<bits/stdc++.h>
using std::cin;
using std::cout;
using std::string;
typedef long long LL;
const int N=1e5+10;
int arr[N];
int main()
{
arr[1]=arr[2]=1;
for(int i=3;i<=100;++i)
{
arr[i]=arr[i-1]+arr[i-2];
if(arr[i]>20211001)
{
printf("%d\n",i);
return 0;
}
}
return 0;
}
B
#include<bits/stdc++.h>
using std::cin;
using std::cout;
using std::string;
typedef long long LL;
const int N=1e5+10;
int arr[N],n,a,b;
int main()
{
string str;
cin>>n>>str;
for(size_t i=0;i<str.length();++i)
{
if(str[i]=='A') ++a;
else ++b;
}
if(a>b) printf("A\n");
else printf("B\n");
return 0;
}
C
#include<bits/stdc++.h>
using std::cin;
using std::cout;
using std::string;
using std::unordered_map;
typedef long long LL;
const int N=110;
int arr[N][30],n,m;
LL ans;
unordered_map<char,int>mp;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
{
scanf("%d",&arr[i][j]);
}
}
for(int i=1,j='A';i<=26;++i,++j) mp[j]=i;
string str;
cin>>str;
for(int i=1;i<str.length();i+=2)
{
int tmpnum=0;
char op=str[i++];
for(int j=i;str[j]!='+'&&j<str.length();++j) tmpnum=tmpnum*10+str[j]-'0';
ans+=arr[tmpnum][mp[op]];
}
printf("%d\n",ans);
return 0;
}
D
#include<bits/stdc++.h>
using std::cin;
using std::cout;
using std::string;
using std::unordered_map;
typedef long long LL;
const int N=1e6+10;
int arr[N],n;
LL ans;
int main()
{
scanf("%d",&n);
unordered_map<int,int>mp;
for(int i=1;i<=n;++i)
{
scanf("%d",&arr[i]);
++mp[arr[i]];
}
ans=n*(n-1)/2*(n-2)/3;
for(auto x=mp.begin();x!=mp.end();++x)
{
auto y=x->second;
//printf("ans:%d\n",ans);
if(y>=2)
ans-=y*(y-1)/2*(n-y);
}
printf("%lld\n",ans);
return 0;
}
E暴力
#include<bits/stdc++.h>
using std::cin;
using std::cout;
using std::string;
using std::unordered_map;
using std::next_permutation;
typedef long long LL;
const int N=15,M=1e6+10;
int arr[M][N],t[N],idx=1;
void write(int n)
{
for(int i=1;i<=n;++i) arr[idx][i]=t[i];
++idx;
}
bool check(int n)
{
int sum[30],div[30];
memset(sum,0,sizeof sum);
memset(div,0,sizeof div);
for(int i=1;i<=n;++i)
{
++sum[i+t[i]];
++div[i-t[i]+15];
if(sum[i+t[i]]>=2||div[i-t[i]+15]>=2) return 0;
}
return 1;
}
void print(int wz,int n)
{
for(int i=1;i<=n;++i) printf("%d ",arr[wz][i]);
printf("\n");
}
bool checksame(int a,int b,int n)
{
for(int i=1;i<=n;++i)
{
if(arr[a][i]==arr[b][i]) return 0;
}
return 1;
}
void fun(int n)
{
for(int i=1;i<=n;++i) t[i]=i;
do
{
if(check(n)) write(n);
}while(next_permutation(t+1,t+n+1));
int ans=0;
for(int i=1;i<idx;++i)
{
for(int j=1;j<idx;++j)
{
if(i==j) continue;
if(checksame(i,j,n)) ++ans;
}
}
printf("%d\n",ans);
}
int main()
{
for(int i=2;i<=11;++i)
{
idx=1;
printf("i=%d:",i);
fun(i);
}
return 0;
}
E正解
#include<stdio.h>
int ans[]={0,0,0,0,2,40,12,496,3252,48328,205188,2732488};
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",ans[n]);
return 0;
}