A - A
题解:按输入的顺序输出对应的下标即可,定义一个数组,将输入的作为下标,下标为值,最后依次输出即可;
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int s[n+5],i,a;
for(i=1;i<=n;i++)
{
cin>>a;
s[a]=i;
}
for(i=1;i<=n;i++)
{
if(i==1)cout<<s[i];
else cout<<" "<<s[i];
}
cout<<endl;
}
C - C
题解:先将数组排序,如果最大值不为1,则将其设为1,否则设为2,在进行一次排序,输出即可
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n;
cin>>n;
long long s[n+5],i;
for(i=0;i<n;i++)
{
scanf("%lld",&s[i]);
}
sort(s,s+n);
if(s[n-1]!=1)s[n-1]=1;
else s[n-1]=2;
sort(s,s+n);
for(i=0;i<n;i++)
{
if(i==0)printf("%lld",s[i]);
else printf(" %lld",s[i]);
}
cout<<endl;
}
D - D
题解:先将字符串中所有字符转换为小写字母,再在遍历时将元音赋值为 ‘0’,输出时不为‘0’的就直接输出“.”+字母即可
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
int n;
n=s.size();
for(int i=0;i<n;i++)
{
if(s[i]>='A'&&s[i]<='Z')s[i]+=32;
if(s[i]=='a'||s[i]=='o'||s[i]=='e'||s[i]=='y'||s[i]=='u'||s[i]=='i')s[i]='0'; }
for(int i=0;i<n;i++)
{
if(s[i]!='0')cout<<"."<<s[i];
}
cout<<endl;
}
E - E
CodeForces - 118B
题解:先输出上半部分(n+1)行,第一行空格为n*2个,随后每行空格数减一,每行从0还是输出直到该行数i-1为止,在从i-1输出到0换行,同理输出
下半部分先根据上半部分计算出下半部分第一行的空格数输出,然后每行空格数加2,依照上半部分同理输出即可
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int m=n;
int w;
for(int i=1;i<=n+1;i++)
{
for(int j=0;j<m*2;j++)cout<<" ";
m-=1;
for( w=0;w<i;w++)
{
if(w==0)cout<<w;
else cout<<" "<<w;
}
if(w==0)cout<<endl;
else
{
for(int q=w-2;q>=0;q--)
{
if(q==w-1)cout<<q;
else cout<<" "<<q;
}
cout<<endl;
}
}
//cout<<m<<endl; m+=2;
for(int i=n;i>=1;i--)
{
for(int j=0;j<=m;j++)cout<<" ";
m+=2;
for(w=0;w<=i-1;w++)
{
if(w==0)cout<<w;
else cout<<" "<<w;
}
if(w==0)cout<<endl;
else
{
for(int q=w-2;q>=0;q--)
{
if(q==w-1)cout<<q;
else cout<<" "<<q;
}
cout<<endl;
}
}
}
B - B
#include<bits/stdc++.h>
using namespace std;
int main()
{
long a,c,ct=0,i=0;
scanf("%ld%ld",&a,&c);
while(a!=0 || c!=0)
{
ct+=(c%3-a%3+3)%3*pow(3,i);//**/
a/=3;
c/=3;
i++;
}
printf("%ld\n",ct);
return 0;
}