// A题
#include <bits/stdc++.h>
using namespace std;
const int N=1200;
int a[N],pos[N];
int main(){
freopen("1.in","r",stdin);
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
pos[a[i]]=i;
}
int ans=0;
vector<pair<int,int> >res;
for(int i=1;i<=n;i++){
while(a[i]!=i){
res.push_back(make_pair(i,pos[a[i]-1]));
int tmp=pos[a[i]-1];
pos[a[i]]=tmp;
swap(a[i],a[pos[a[i]-1]]);
pos[a[i]]=i;
ans++;
}
}
printf("%d\n",ans);
for(auto&it:res){
printf("%d %d\n",it.first, it.second);
}
return 0;
}
// B题
#include <bits/stdc++.h>
using namespace std;
char s[300005];
int num[30];
unordered_map<long long,int>mp;
long long change(int x,int y){
return 1LL*(x+200006)*500000+(y+200006);
}
int main(){
// freopen("1.in","r",stdin);
scanf("%s",s+1);
int n=strlen(s+1);
long long res=0;
mp[change(0,0)]++;
for(int i=1;i<=n;i++){
if(s[i]=='r') num[1]++;
else if(s[i]=='e') num[2]++;
else if(s[i]=='d') num[3]++;
res+=1LL*mp[change(num[1]-num[2],num[2]-num[3])];
mp[change(num[1]-num[2],num[2]-num[3])]++;
}
printf("%lld\n",res);
return 0;
}
// C题
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+7;
int pos[N][35];
bool vis[N];
int a[N];
int main(){
// freopen("1.in","r",stdin);
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++){
int tmp=a[i];
for(int j=33;j>=1;j--){
if(tmp%2==1) pos[i][j]=1;
else pos[i][j]=0;
tmp/=2;
}
}
int res=0;
for(int j=1;j<=33;j++){
int tmp=0;
res*=2;
for(int i=1;i<=n;i++){
if(vis[i]) continue;
if(pos[i][j]) tmp++;
}
if(tmp>=k){
res++;
for(int i=1;i<=n;i++){
if(vis[i]) continue;
if(pos[i][j]==0) vis[i]=true;
}
}
}
printf("%d\n",res);
return 0;
}
//D 题
#include <bits/stdc++.h>
using namespace std;
long long a[4][4];
long long p[4][4];
long long res[4][4];
long long mod=1e9+6;
long long MOD=1e9+7;
void mul_1(){
for(int i=1;i<=2;i++){
for(int j=1;j<=2;j++){
res[i][j]=0;
for(int k=1;k<=2;k++){
res[i][j]=(res[i][j]+p[i][k]*p[k][j]%mod)%mod;
}
}
}
for(int i=1;i<=2;i++){
for(int j=1;j<=2;j++) p[i][j]=res[i][j];
}
}
void mul_2(){
for(int i=1;i<=2;i++){
for(int j=1;j<=2;j++){
res[i][j]=0;
for(int k=1;k<=2;k++){
res[i][j]=(res[i][j]+p[i][k]*a[k][j]%mod)%mod;
}
}
}
for(int i=1;i<=2;i++){
for(int j=1;j<=2;j++) a[i][j]=res[i][j];
}
}
void pow_(long long k){
while(k){
if(k%2==1){
mul_2();
k--;
}
else{
mul_1();
k/=2;
}
}
}
long long POW(long long x, long long y){
long long res=1;
x%=MOD;
while(y){
if(y%2==1){
res=res*x%MOD;
y--;
}
else{
x=x*x%MOD;
y/=2;
}
}
return res;
}
int main(){
// freopen("1.in","r",stdin);
long long n,m,k;
scanf("%lld%lld%lld",&n,&m,&k);
if(k==1){
printf("%lld\n",n%MOD);
return 0;
}
else if(k==2){
printf("%lld\n",m%MOD);
return 0;
}
a[1][1]=0;
a[2][1]=1;
p[1][1]=p[1][2]=2;
p[2][1]=1;
p[2][2]=0;
pow_(k-2);
long long res1=a[1][1];
a[1][1]=1;
a[2][1]=0;
a[1][2]=0;
a[2][2]=0;
p[1][1]=p[1][2]=2;
p[2][1]=1;
p[2][2]=0;
pow_(k-2);
long long res2=a[1][1];
long long ans=POW(n,res1)*POW(m,res2)%MOD;
printf("%lld\n",ans);
// cout<<n<<' '<<m<<' '<<k<<endl;
return 0;
}
#网易笔试#