A. 把字符串再反正输出一遍即可
#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define pb push_back
#define ll long long
#define sz(i) (i).size()
#define mem(i,j) memset(i,j,sizeof(i))
#define rep(i,j,k) for(ll i=(j);i<=(k);i++)
typedef pair<int,int> pii;
int lowbit(int x){return x&(-x);}
const int N=1e6+10,M=1e3+10;
int h[N],e[N<<1],ne[N<<1],w[N<<1],idx;
void add(int a,int b,int c){
ne[++idx]=h[a];h[a]=idx;e[idx]=b;w[idx]=c;
}
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int n,a[N],b,k,m,d,sum[N],f[N][19],g[N][19];
int dp[N];int cnt=0,c;
bitset<N> vis;
bool ok;ll pre[M];
void solve()
{
string s;cin>>s;
cout<<s;
reverse(s.begin(),s.end());
cout<<s;
cout<<'\n';
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
int t;cin>>t;
//int t=1;
while(t--){
solve();
}
}
B, 维护一个1 2 3 即可
#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define pb push_back
#define ll long long
#define sz(i) (i).size()
#define mem(i,j) memset(i,j,sizeof(i))
#define rep(i,j,k) for(ll i=(j);i<=(k);i++)
typedef pair<int,int> pii;
int lowbit(int x){return x&(-x);}
const int N=1e6+10,M=1e3+10;
int h[N],e[N<<1],ne[N<<1],w[N<<1],idx;
void add(int a,int b,int c){
ne[++idx]=h[a];h[a]=idx;e[idx]=b;w[idx]=c;
}
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int n,a[N],b,k,m,d,sum[N],f[N][19],g[N][19];
int dp[N];int cnt=0,c;
bitset<N> vis;
bool ok;ll pre[M];
void solve()
{
cin>>n;
if(n&1){
for(int i=1;i<=n;i++)cout<<3<<" ";
}
else{
cout<<1<<" "<<3<<" ";
for(int i=1;i<=n-2;i++)cout<<2<<" ";
}
cout<<'\n';
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
int t;cin>>t;
//int t=1;
while(t--){
solve();
}
}
C. 最差的情况肯定是n在x==i 的位置上 我们只需要把x向前贪心 前面是不是有位置满足 j val val%(x==i)==0&&n&j==0 的情况可以进行交换
#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define pb push_back
#define ll long long
#define sz(i) (i).size()
#define mem(i,j) memset(i,j,sizeof(i))
#define rep(i,j,k) for(ll i=(j);i<=(k);i++)
typedef pair<int,int> pii;
int lowbit(int x){return x&(-x);}
const int N=2e5+10,M=1e3+10;
int h[N],e[N<<1],ne[N<<1],w[N<<1],idx;
void add(int a,int b,int c){
ne[++idx]=h[a];h[a]=idx;e[idx]=b;w[idx]=c;
}
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int n,a[N],b,k,m,d,sum[N],f[N][19],g[N][19];
int dp[N];int cnt=0,c;int ans[N];int x;
bitset<N> vis;
bool ok;ll pre[M];
void solve()
{
cin>>n>>x;
if(n==x){
cout<<x<<" ";
for(int i=2;i<=n-1;i++){
cout<<i<<" ";
}
cout<<1<<" ";
}
else if(n%x)cout<<-1<<'\n';
else {
ans[1]=x;ans[n]=1;
for(int i=2;i<n;i++)ans[i]=i;
ans[x]=n;
int cur=x;
for(int i=x;i<n;i++){
if(i%cur==0&&n%i==0){
swap(ans[cur],ans[i]);
cur=i;
}
}
for(int i=1;i<=n;i++)cout<<ans[i]<<" ";
}
cout<<'\n';
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
int t;cin>>t;
//int t=1;
while(t--){
solve();
}
}
D. 维护一个4*n*n 即可 那么就要保证其他不同的数在 3*n+1,5*n-1即可
#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define pb push_back
#define ll long long
#define sz(i) (i).size()
#define mem(i,j) memset(i,j,sizeof(i))
#define rep(i,j,k) for(ll i=(j);i<=(k);i++)
typedef pair<int,int> pii;
int lowbit(int x){return x&(-x);}
const int N=3e5+10,M=1e3+10;
int h[N],e[N<<1],ne[N<<1],w[N<<1],idx;
void add(int a,int b,int c){
ne[++idx]=h[a];h[a]=idx;e[idx]=b;w[idx]=c;
}
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int n,a[N],b,k,m,d,sum[N],f[N][19],g[N][19];
int dp[N];int cnt=0,c;int ans[N];int x;
bitset<N> vis;
bool ok;ll pre[M];
void solve()
{
cin>>n;
for(int i=1;i<=n;i++)a[i]=4*n;
int now=n/2;
for(int i=now,j=1;i>=1;i--,j++)a[i]+=j;
if(n&1)now+=2;
else now++;
for(int i=now,j=1;i<=n;i++,j++)a[i]-=j;
a[1]=5*n;a[n]=3*n;
for(int i=1;i<=n;i++)cout<<a[i]<<" ";
cout<<'\n';
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
int t;cin>>t;
//int t=1;
while(t--){
solve();
}
}