2020.11.6-vj補題
阿新 • • 發佈:2020-11-15
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; }